北京城建十建设工程有限公司网站php按步骤做网站

pingmian/2026/1/25 2:18:01/文章来源:
北京城建十建设工程有限公司网站,php按步骤做网站,联合实验室 网站建设方案,海南做网站的公司有哪些Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎#xff0c;设计用于云计算环境中#xff0c;能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性#xff0c;可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个… Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎设计用于云计算环境中能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个全文搜索引擎它还提供了分布式的多用户能力实时的分析以及对复杂搜索语句的处理能力使其在众多场景下如企业搜索日志和事件数据分析等都有广泛的应用。 本文将向你详细介绍什么是倒排索引、以及 Elasticsearch 数据存储、数据更新和数据删除的原理 文章目录 1、倒排索引1.1、为什么需要倒排索引1.2、为什么叫倒排索引1.3、倒排索引的结构 2、数据存储原理2.1、数据存储过程2.2、创建倒排索引的过程2.3、分词2.4、生成词项2.5、分词器2.6、创建倒排列表2.7、数据压缩 3、数据更新原理3.1、数据更新过程3.2、更新倒排列表3.3、版本控制3.4、数据复制 4、数据删除原理4.1、数据删除原理4.2、删除数据的恢复 1、倒排索引 1.1、为什么需要倒排索引 倒排索引也是索引。索引初衷都是为了快速检索到你要的数据。 每种数据库都有自己要解决的问题或者说擅长的领域对应的就有自己的数据结构而不同的使用场景和数据结构需要用不同的索引才能起到最大化加快查询的目的。 对 Mysql 来说是 B 树对 Elasticsearch 和 Lucene 来说是倒排索引。 Elasticsearch 是建立在全文搜索引擎库 Lucene 基础上的搜索引擎它隐藏了 Lucene 的复杂性取而代之的提供一套简单一致的 RESTful API不过掩盖不了它底层也是 Lucene 的事实。Elasticsearch 的倒排索引其实就是 Lucene 的倒排索引。 1.2、为什么叫倒排索引 “倒排索引”Inverted Index的概念是从正向索引Forward Index中衍生出来的。 在正向索引中我们从文档出发记录下每个文档中出现的词项这样就可以知道每个文档包含哪些词项。而在倒排索引中我们从词项出发记录下每个词项出现在哪些文档中这样就可以知道每个词项被哪些文档包含。 正向索引document - to - words 倒排索引word - to - documents因此“倒排索引可以看作是正向索引的逆操作所以被称为倒排”。在全文搜索中倒排索引是非常重要的数据结构因为它可以让我们快速找到包含特定词项的所有文档。 1.3、倒排索引的结构 倒排索引作为一种数据结构用于存储一种映射关系即从词项到出现该词项的文档的映射。它是全文搜索引擎的核心组成部分如 Elasticsearch、Lucene 等。 在倒排索引中每个唯一的词项都有一个相关的倒排列表这个列表中包含了所有包含该词项的文档的 ID。这样当我们搜索一个词项时搜索引擎只需要查找倒排索引就可以快速找到所有包含这个词项的文档。 例如假设我们有以下三个文档 1. 文档1I love coding 2. 文档2I love reading 3. 文档3I love both对这些文档建立倒排索引后我们会得到以下的映射关系 - I文档1文档2文档3 - love文档1文档2文档3 - coding文档1 - reading文档2 - both文档3所以当我们搜索love时搜索引擎会在倒排索引中找到love然后返回所有包含love的文档即文档1文档2 和文档3。 2、数据存储原理 2.1、数据存储过程 创建或更新倒排索引是 Elasticsearch 数据存储过程的核心部分之一Elasticsearch 的数据存储过程也确实包括创建倒排索引的过程但并不仅限于此。 Elasticsearch 的数据存储过程主要包括以下多个步骤 接收数据Elasticsearch 首先接收到用户通过 HTTP 请求发送的数据数据通常是 JSON 格式的文档。分配文档 ID如果用户没有指定文档 IDElasticsearch 会为新文档自动生成一个唯一的 ID。选择分片Elasticsearch 会根据文档ID和索引的分片策略选择一个分片来存储这个文档。创建和更新倒排索引Elasticsearch 会对文档的内容进行分词生成词项并为这些词项创建或更新倒排索引。这样新的文档就可以被搜索到了。存储文档Elasticsearch 会将文档的原始内容和元数据如版本号、修改时间等存储在分片中。原始内容存储在 _source 字段中用于在获取文档时使用。复制文档为了提高数据的可用性和搜索性能Elasticsearch 会将文档复制到其他节点的副本分片中。确认写入当文档被成功写入主分片和所有副本分片后Elasticsearch 会向用户发送一个确认响应。 本篇接下来内容我们将重点关注在创建和更新倒排索引的过程之中我们将详细研究的是创建倒排索引的过程这是因为倒排索引是 Elasticsearch 实现快速全文搜索的关键数据结构。 2.2、创建倒排索引的过程 创建倒排索引的过程主要包括以下步骤 分词这是第一步将一段文本分解成一个个的词项Tokens。这个过程由分词器Tokenizer完成可以根据不同的语言和需求选择不同的分词器。 生成词项对分词后的结果进行处理生成最终的词项。这个过程可能包括转换为小写、去除停用词、词干提取等操作。 创建倒排列表对于每个词项都创建一个倒排列表记录包含这个词项的所有文档的 ID。 更新倒排索引将新的倒排列表添加到倒排索引中。如果倒排索引中已经存在这个词项就将新的文档 ID 添加到对应的倒排列表中。 以上就是创建倒排索引的主要步骤。需要注意的是这个过程在每次插入新的文档或者更新已有的文档时都会进行。 2.3、分词 分词是将一段文本分解成一个个的词项Tokens的过程。这是全文搜索和文本分析的第一步因为只有将文本分解成词项才能对其进行进一步的处理和分析。 分词的过程通常由分词器Tokenizer完成分词器可以根据不同的语言和需求采用不同的分词策略。 分词策略决定了如何将文本分解成词项。以下是一些常见的分词策略 空格分词这是最简单的分词策略只是简单地将文本按空格分解成词项。这种方式简单快速但可能无法处理复杂的语言特性。 基于语法的分词这种分词策略会考虑语言的语法规则例如英语的复数形式、过去式等。这种方式可以提高搜索的准确性但处理起来更复杂。 基于词典的分词这种分词策略会使用一个词典来分解文本可以处理一些特殊的词组和短语。这种方式可以提高搜索的相关性但需要一个高质量的词典。 N-gram 分词这种分词策略会将文本分解成连续的 n 个字符的序列。这种方式可以处理任何语言但可能会生成大量的词项影响搜索的效率和准确性。 在 Elasticsearch 中可以通过配置分词器来控制分词的策略以适应不同的语言和搜索需求。 2.4、生成词项 生成词项是分词过程的一部分它是将分词后的结果进行处理生成最终用于创建倒排索引的词项。 在生成词项的过程中可能会进行以下一些操作 转换为小写为了使搜索不区分大小写通常会将所有的词项转换为小写。 去除停用词停用词是一些常见的、没有太多实际意义的词如英语中的 “the”、“is”、“at” 等。去除停用词可以减少倒排索引的大小提高搜索的效率。 词干提取词干提取是将词项转换为其基本形式或词干的过程。例如英语中的 “running”、“runs”、“ran” 都会被转换为 “run”。这样可以使搜索不受词形变化的影响。 词形还原词形还原是将词项转换为其原始形式的过程。例如英语中的 “better” 会被转换为 “good”。这样可以使搜索更准确。 以上就是生成词项的一些常见操作。需要注意的是这些操作的具体实现可能会依赖于特定的语言和分词器。 2.5、分词器 在 Elasticsearch 中生成词项的设置主要通过配置分词器Analyzer来实现。分词器由一个分词器Tokenizer和多个过滤器Filter组成分词器负责将文本分解成词项过滤器负责对词项进行处理。 以下是一个简单的分词器配置示例 {settings: {analysis: {analyzer: {my_analyzer: {tokenizer: standard,filter: [lowercase, my_stemmer]}},filter: {my_stemmer: {type: stemmer,name: english}}}} }在这个示例中我们定义了一个名为 “my_analyzer” 的分词器它使用 “standard” 分词器和两个过滤器 “lowercase” 和 “my_stemmer”。 “lowercase” 过滤器会将所有词项转换为小写 “my_stemmer” 过滤器会对英语词项进行词干提取。 你可以根据需要选择不同的分词器和过滤器以实现不同的生成词项策略。例如如果你不想启用词干提取可以去掉 “my_stemmer” 过滤器如果你想启用词形还原可以添加一个词形还原过滤器。 需要注意的是Elasticsearch 的分词器和过滤器都是插件形式提供的不同的插件支持不同的语言和功能。在使用前你需要确保你的 Elasticsearch 安装了相应的插件。 2.6、创建倒排列表 创建倒排列表是创建倒排索引过程的一部分。对于每个词项都会创建一个倒排列表记录包含这个词项的所有文档的 ID。 以下是创建倒排列表的基本步骤 初始化倒排列表对于一个新的词项首先创建一个空的倒排列表。添加文档 ID当一个文档被分词并生成词项后将这个文档的 ID 添加到对应词项的倒排列表中。排序为了提高搜索效率倒排列表通常会按照文档 ID 的顺序进行排序。压缩为了节省存储空间倒排列表通常会进行压缩。常见的压缩方法包括变长编码、游程编码等。 2.7、数据压缩 对于 Elasticsearch 的压缩问题假设有这样一个数组 [73, 300, 302, 332, 343, 372]如何把它进行尽可能的压缩 Elasticsearch 中的数据压缩主要通过以下三个步骤实现 增量编码Delta-encode只记录元素与元素之间的增量例如数组 [73, 300, 302, 332, 343, 372] 经过增量编码后变为 [73, 227, 2, 30, 11, 29]。 分割成块Split into blocks在 Lucene 中每个块包含 256 个文档 ID这样可以保证每个块增量编码后每个元素都不会超过 2561 byte。例如我们可以将上述数组分割为两个块[73, 227, 2] 和 [30, 11, 29]。 按需分配空间Bit packing根据每个块中最大元素的大小按需分配空间。例如对于第一个块 [73, 227, 2]最大元素是 227需要 8 bits所以为这个块的每个元素分配 8 bits 的空间。对于第二个块 [30, 11, 29]最大元素是 30只需要 5 bits所以为这个块的每个元素分配 5 bits 的空间。 这三个步骤共同组成了一种编码技术称为 Frame Of ReferenceFOR。 这种技术可以有效地压缩数据降低存储空间的需求。 3、数据更新原理 3.1、数据更新过程 Elasticsearch 的数据更新是不是就是 Elasticsearch 更新倒排列表Elasticsearch 的数据更新过程确实包括更新倒排索引但并不仅限于此。 当一个已存在的文档在 Elasticsearch 中被更新时以下步骤会被执行 版本控制Elasticsearch 会检查更新请求中的版本信息如果版本信息与当前文档的版本不匹配更新操作会被拒绝。删除旧文档Elasticsearch 会将旧文档标记为删除但不会立即从磁盘中删除。插入新文档Elasticsearch 会将新文档插入到索引中这包括存储新文档的原始内容和元数据以及更新倒排索引。复制更新为了提高数据的可用性和搜索性能Elasticsearch 会将更新操作复制到其他节点的副本分片中。确认更新当更新操作被成功应用到主分片和所有副本分片后Elasticsearch 会向用户发送一个确认响应。 所以虽然更新倒排索引是 Elasticsearch 数据更新过程的重要部分但并不是全部。Elasticsearch 还会进行一些其他处理如版本控制、数据复制等。 3.2、更新倒排列表 更新倒排列表是在插入新的文档或更新已有文档时对应词项的倒排列表需要进行更新。 以下是更新倒排列表的基本步骤 查找词项首先根据词项查找对应的倒排列表。添加文档 ID如果是插入新的文档将新文档的 ID 添加到倒排列表中。删除文档 ID如果是更新已有的文档首先从倒排列表中删除旧文档的 ID然后添加新文档的 ID。排序为了提高搜索效率每次更新后都需要重新对倒排列表进行排序。压缩为了节省存储空间每次更新后都需要重新对倒排列表进行压缩。 3.3、版本控制 在 Elasticsearch 中版本控制主要有以下两个目的 确保数据一致性在分布式系统中同一份数据可能会被多个节点同时操作如果没有合适的控制机制就可能导致数据不一致。通过版本控制Elasticsearch 可以确保即使在并发操作的情况下数据的一致性也能得到保证。防止更新丢失在并发更新的情况下如果没有版本控制较晚发出的更新请求可能会覆盖较早发出的更新请求的结果导致更新丢失。通过版本控制Elasticsearch 可以确保每个更新请求都会被正确地应用防止更新丢失。 在 Elasticsearch 中每个文档都有一个与之关联的版本号。当一个文档被更新时Elasticsearch 会检查更新请求中的版本号只有当版本号匹配时才会执行更新操作。这样就可以防止由于并发更新导致的数据不一致和更新丢失。 以下是版本控制的基本步骤 检查版本号当接收到一个更新请求时Elasticsearch 会检查请求中的版本号。如果请求中的版本号与当前文档的版本号不匹配Elasticsearch 会拒绝这个更新请求。 更新文档如果版本号匹配Elasticsearch 会进行更新操作包括更新倒排列表、存储新的文档内容和元数据等。 更新版本号完成更新操作后Elasticsearch 会将文档的版本号加一。新的版本号会被存储在文档的元数据中也会被返回给用户。 复制更新为了保持数据的一致性Elasticsearch 会将包含新的版本号的更新操作复制到所有的副本分片。 3.4、数据复制 在 Elasticsearch 中为了提高数据的可用性和搜索性能每个文档都会被复制到一个或多个副本分片中。因此当更新倒排列表时也需要将这个更新操作复制到所有的副本分片。 以下是数据复制的基本步骤 发送复制请求当主分片完成了更新操作后它会将这个更新操作以请求的形式发送给所有的副本分片。 应用更新操作副本分片收到复制请求后会按照相同的步骤应用这个更新操作包括更新倒排列表、存储新的文档内容和元数据等。 确认更新副本分片完成更新操作后会向主分片发送一个确认响应。 等待所有确认主分片会等待所有副本分片的确认响应。当所有副本分片都确认更新操作成功后主分片才会向用户发送一个确认响应。 以上就是 Elasticsearch 更新倒排列表时的数据复制过程。需要注意的是这个过程可能会受到网络条件、副本分片的状态、集群的配置等因素的影响。 4、数据删除原理 4.1、数据删除原理 在 Elasticsearch 中数据的删除并不是立即从磁盘中移除数据而是通过标记的方式来实现的。 以下是 Elasticsearch 数据删除的基本步骤 标记删除当接收到一个删除请求时Elasticsearch 不会立即删除数据而是将对应的文档标记为已删除。更新倒排索引虽然文档被标记为已删除但是它的词项仍然存在于倒排索引中。因此Elasticsearch 会更新倒排索引将已删除文档的词项从倒排索引中移除。复制删除为了保持数据的一致性Elasticsearch 会将删除操作复制到所有的副本分片。确认删除当删除操作被成功应用到主分片和所有副本分片后Elasticsearch 会向用户发送一个确认响应。物理删除被标记为已删除的文档在一段时间后会在后台的合并Segment Merging过程中被物理删除。 以上就是 Elasticsearch 数据删除的基本原理。需要注意的是这个过程可能会受到网络条件、副本分片的状态、集群的配置等因素的影响。 4.2、删除数据的恢复 在 Elasticsearch 中一旦数据被删除就无法直接恢复。这是因为 Elasticsearch 的删除操作是不可逆的一旦一个文档被标记为已删除就无法取消这个标记。 然而你可以通过以下方式来尽可能地恢复被删除的数据 备份和恢复如果你有定期备份 Elasticsearch 数据你可以从备份中恢复被删除的数据。Elasticsearch 提供了 Snapshot 和 Restore 功能可以用来备份和恢复整个集群的数据。 重新索引如果被删除的数据仍然存在于原始数据源中你可以重新索引这些数据。这需要你有一个完整的数据源并且知道如何从数据源中提取和索引数据。 使用软删除在某些情况下你可能希望保留被删除的数据以便于以后恢复。这时你可以使用软删除Soft Delete功能。软删除并不会真正删除数据而是将数据标记为已删除。你可以在需要时取消这个标记从而恢复数据。 需要注意的是以上方法都有一定的限制并不能保证100%恢复被删除的数据。因此最好的策略还是定期备份数据以防止数据丢失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牡丹江市营商环境建设监督局网站珠海品牌型网站建设

HTTP响应详解 认识 "状态码" (status code) 状态码表示访问一个页面的结果 . ( 是访问成功 , 还是失败 , 还是其他的一些情况 ...). 以下为常见的状态码 . 200 OK 这 是一个最常见的状态码, 表示访问成功 . 抓包抓到的大部分结果都是 200 例如访问搜狗…

网站服务器租用多少钱才合理呢建个网站的电话号码

准备工作下载python,本文以python3.6为例。python3.6下载地址:python3下载地址,选择合适的版本安装。安装成功后,打开命令提示符,在其中输入python,显示如下信息,则说明安装成功。C:\Users\Ubun…

windows搭建网站开发热烈祝贺网站上线

结构光视觉技术是一种主动投影式的三维测量技术,通过使用投影仪和相机组成的系统来对物体进行三维测量 系统结构: 硬件系统: 常见编码方法: 结构光图案编码 常用的是格雷码和传统的二进制码相比,格雷码的编码数中任意…

自己做的网站背景怎么设置星链seo管理

在linux环境下安装前的准备1.内存空间大小 最少1GB的物理内存查看现有内存的命令#grep MemTotal /proc/meminfo2.交换分区的大小内存和交换分区的配置关系内存 (MB) 交换分区256~512 内存的2倍513~2048 内存的1.5倍2049…

猪八戒做的网站怎么样搭建wordpress博客终端

tinyxml2类对象 链接 XMLDocument xml文档(文件)对象。 作用: 加载xml文件,

成都青羊区网站建设八桂职教网登录入口

梯度下降法 梯度下降法(Gradient Descent, GD)常用于求解无约束情况下凸函数(Convex Function)的极小值,是一种迭代类型的算法,因为凸函数只有一个极值点,故求解出来的极小值点就是函数的最小值…

电子商务网站建设合同网站建设有哪三部

1.ls命令 命令格式: ls -a -l -h Linux路径 (1) 直接使用ls,不加选项和参数。 ls 将会以平铺形式,列出当前文件夹下的内容: (2)加上参数 ls / 将会列出/目录下的内容。 -a选项…

营销型网站设计注意东莞十大企业

数据相关行业都离不开数据库,mysql在ubuntu上的安装比在windows上安装简单多了,下面我记录一下自己成功安装的步骤和使用。1.安装软件首先更新一下源:sudo apt-get update然后安装mysql服务器端:sudo apt-get install mysql-serve…

电影网站加盟可以做么汕头建站网站模板

大家好,我是带剑书生,开源库get_local_info的作者。目前我的付费专栏已经上线第七篇文章,用于介绍在实现get_local_info过程中,遇到该问题所使用的解决方法,喜欢的朋友可以去订阅了,19.9元,非常…

上海企业网站设计公司电话wordpress仿站教程

1 项目背景 #c 概述 项目的目的 图像分类是整个计算机视觉领域中最基础的任务,也是最重要的任务之⼀,最适合拿来进⾏学习实践。为了让新⼿们能够⼀次性体验⼀个⼯业级别的图像分类任务的完整流程,本次我们选择带领⼤家完成⼀个对图片中⼈脸进…

帝国系统怎样做网站地图优化师是一份怎样的工作

00. 目录 文章目录 00. 目录01. 串口简介02. 串口协议03. USART简介04. USART框图05. USART基本结构06. 数据帧07. 起始位侦测08. 数据采样09. 波特率发生器10. 附录 01. 串口简介 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便…

做的网站怎样更新收费小说网站怎么做

1、使用最新版本的 Node.js 仅仅是简单的升级 Node.js 版本就可以轻松地获得性能提升,因为几乎任何新版本的 Node.js 都会比老版本性能更好,为什么? Node.js 每个版本的性能提升主要来自于两个方面: V8 的版本更新;Nod…

建站教程pdf公司做网站让我们销售

在上家公司都是运维安装nginx,到新公司后代码开发完成部署测试服务器要求自己装nginx,研究了好久安装好之后,到正式上线还要自己安装,索性把安装步骤自己记载下来(好大一部分都是在网站找的)。一&#xff0…

云南网站建设哪家公司好东莞市门户网站建设怎么样

在日常的生活和工作当中不免会遇到一些无法进行复制但是又想要去将它摘录下来的文字。用手去进行输入的话及麻烦又费力,这个时候我们可以使用OCR技术来讲它们识别出来。而screenocr就是这样子的一款软件,还不是很了解screenocr都有哪些功能如何使用的用户…

营销型网站建设大概多少钱网络服务提供者不得为未满多少岁开展工作

面对日益增多的汽车数据安全事件,对于广大用户来说,有没有既廉价又安全的解决方案? 频发的汽车数据安全事件 随着汽车“新四化”大潮的来临,汽车用户从电动化、网联化、智能化、共享化中切实体验到了越来越多的便利,各…

弹性云主机做网站安徽省建设部干部网站

ISO27001审核主要针对组织的信息安全管理体系(ISMS)进行全面的审查,以确保其符合ISO/IEC 27001标准的要求。审核过程通常包括以下几个方面: 1. 组织环境:审核组织的信息安全管理体系是否能够在组织内部环境以及与外部供…

最流行的网站开发什么网站可以发布有偿做项目

构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp。不仅新手,包括一些有经验的程序员还是比较迷茫,究竟我该用哪种类…

揭阳网站建设方案外包家在深圳坪山

DefaultReflectorFactory是反射工厂接口ReflectorFactory的默认实现,其主要是实现了对反射对象Reflector的创建和缓存。 有三个方法: // 判断是否开启缓存boolean isClassCacheEnabled();// 设置是否缓存void setClassCacheEnabled(boolean classCacheEn…

郑州网站制作哪家便宜seo网站内容更新

还记得被Java统治的时代吗?最近,这个格局已经被悄然打破,正是被来自曾经的小弟,新晋网红Python给硬生生拽下神坛。对此,Java曾表示强烈质疑,最近一份数据榜单悄悄来了!PLPY 8月榜单官宣&#xf…

做外贸的免费网站有哪些腾讯云服务器如何使用

这篇文章主要介绍了Python构建XML树结构的方法,结合实例形式分析了Python创建与打印xml数结构的实现步骤与相关操作技巧,需要的朋友可以参考下本文实例讲述了Python构建XML树结构的方法。分享给大家供大家参考,具体如下:1.构建XML元素#encodingutf-8from…