找人做网站如何担保,创意设计图案,教育类网站如何做,中国工程招标网采购招标网1、架构 es会为每个索引创建一定数量的主分片和副本分片。
分片#xff08;Shard#xff09;#xff1a;
将索引数据分割成多个部分#xff0c;每个部分都是一个独立的索引。 主要目的是实现数据的分布式存储和并行处理#xff0c;从而提高系统的扩展性和性能。 在创建索…1、架构 es会为每个索引创建一定数量的主分片和副本分片。
分片Shard
将索引数据分割成多个部分每个部分都是一个独立的索引。 主要目的是实现数据的分布式存储和并行处理从而提高系统的扩展性和性能。 在创建索引时可以指定主分片的数量一旦索引创建完成主分片的数量就不能再更改。每个主分片负责存储索引数据的一部分并可以独立地处理搜索请求。副本Replica 副本是主分片的完全复制用于提供数据的冗余备份增强数据的可用性和容错能力。 每个主分片可以有零个或多个副本分片。 副本分片与主分片分布在不同的节点上当主分片所在的节点出现故障时副本分片可以接管主分片的工作确保服务的连续性。 此外副本分片还可以用于提高搜索性能因为搜索请求可以并行地在多个副本分片上执行。
此外副本分片还可以用于提高搜索性能因为搜索请求可以并行地在多个副本分片上执行。
2、存储 数据按照mapping序列化为json存储 倒排索引相反于k-v结构它从词value出发记载了这个词在哪些文档中出现过
3、基本概念 mapping相当于数据库定义、字段定义 index索引相当于数据库 type类型数据类型 document文档一条数据 field一个字段 shard分片多节点存储 replia副本用于故障恢复 分析器预设分析器、自定义分析器
4、字段类型 keyword关键词类型用于精确匹配不会分词es直接根据keyword构建倒排索引一般与term结合使用 text文本类型用于全文搜索会被分词器处理生成多个词条支持模糊匹配 Numeric数值类型integer/long/short/byte/double/float Date日期类型用于存储日期和时间数据支持范围查询、日期格式化和日期计算等 Boolean布尔类型 Object对象类型用于存储复杂结构的数据可以嵌套其他字段。 Nested嵌套类型用于存储对象数组允许对数组中的每个对象进行独立的搜索。 IP用于存储IPv4或IPv6地址不会分词
5、查询方式 term精确查询效率高不会分词 match匹配查询会分词适用于text类型的字段 phrase短语查询会分词要求这些分词在文档中的顺序和间隔与查询短语一致适用于保持短语顺序的搜索 wildcard通配符模糊查询*?性能低于phrase fuzzy拼写错误模糊查询 prefix前缀查询 range范围查询 bool查询 nested嵌套查询性能低于精确查询
6、搜索过程 query定位到位置但不取 请求打到每个shard每个shard在本地搜索并返回一个优先队列包含docId, 打分值 返回队列数据给协调节点 协调节点进行数据合并、排序、分页 fetch取数据 协调节点根据query结果去各分片上查询docId的实际document内容返回
7、索引优化 查询方面 禁用wildcard通配符查询会扫描大量文档用高性能的term或phrase代替 对需要分词的字段合理的设置分词器中文分词大小写等 充分利用倒排索引机制对于需要精确匹配的字段尽量用keywordtext会被分词器处理适用于全文搜索 减少动态索引索引如果是基于时间动态生成会越来越多 存储与部署 冷热分离热数据如最近一周的数据其余为冷数据。 对于冷数据不会再写入新数据 增加sharding
8、更新和删除过程 删除和更新都是写操作但是Elasticsearch中的文档是不可变的因此不能被删除或者改动以展示其变更。
磁盘上的每个段都有一个相应的.del文件。当删除请求发送后文档并没有真的被删除而是在.del文件中被标记为删除。该文档依然能匹配查询但是会在结果中被过滤掉。当段合并时在.del文件中被标记为删除的文档将不会被写入新段。
在新的文档被创建时Elasticsearch会为该文档指定一个版本号当执行更新时旧版本的文档在.del文件中被标记为删除新版本的文档被索引到一个新段。旧版本的文档依然能匹配查询但是会在结果中被过滤掉。
9、 大数据量上亿量级的聚合如何实现
Elasticsearch 提供的首个近似聚合是cardinality 度量。
它提供一个字段的基数即该字段的distinct或者unique值的数目。它是基于HLL算法的。HLL 会先对我们的输入作哈希运算然后根据哈希运算的结果中的 bits 做概率估算从而得到基数。
其特点是可配置的精度用来控制内存的使用更精确 更多内存小的数据集精度是非常高的我们可以通过配置参数来设置去重需要的固定内存使用量。
无论数千还是数十亿的唯一值内存使用量只与你配置的精确度相关。
10、 在并发情况下Elasticsearch如果保证读写一致 可以通过版本号使用乐观并发控制以确保新版本不会被旧版本覆盖由应用层来处理具体的冲突。
另外对于写操作一致性级别支持quorum/one/all默认为quorum即只有当大多数分片可用时才允许写操作。但即使大多数可用也可能存在因为网络等原因导致写入副本失败这样该副本被认为故障分片将会在一个不同的节点上重建。
对于读操作可以设置replication为sync(默认)这使得操作在主分片和副本分片都完成后才会返回如果设置replication为async时也可以通过设置搜索请求参数_preference为primary来查询主分片确保文档是最新版本。