标题:elasticsearch 基础之分布式存储 内容: 对于任何数据存储工具,都应该清楚明了的知道其数据存储结构。 下面说说ElasticSearch中数据存储的一些关键点倒排索引倒排索引本质是哈希表,完成由搜索词到文档id的映射,这也是elasticsearch搜索比较快速高效的一个重要原因。 倒排索引也就是说在存储数据的时候,先进行数据分析,完成可搜索的词条到文档的映射。 Doc Value完成文档到词项的映射,在索引数据与建立倒排索引时同时建立doc values。 主要用于排序,聚合。 除了analyzed string字段之外,其他字段默认都会记录doc value。 doc values的存储使用了一些压缩机制。 对于数字类型字段,一般取最大公约数,然后只记录其倍数。 如果没有合适的最大公约数,取最小的数值,然后记录其差值。 如果某个字段不需要这个功能呢,可以通过配置字段的属性:"doc_values": false 来禁用。 基于lucene的存储结构Lucene是一个功能强大的搜索库,但是基于Lucene进行开发比较复杂。 ElasticSearch是基于lucene开发的搜索引擎,提供了更简单易用的API。 索引实际上是lucene中的概念,一个索引由多个索引段构成,大部分的场景是写一次,读多次。 当满足某些条件时,多个索引段会合并成一个更大的索引段。 索引段的减少有助于搜索效率的提高(可能是lucene内部原理决定的),但是频繁的段合并会影响性能。 Elasticsearch中的每次刷新都会新创建一个段,新创建的段里面的数据在下一次刷新之前是不会被搜索到的。 ES的段合并是在后台进行的。 存储数据时的数据流向index buffer - filesystem cache - 磁盘第一个过程是refresh操作,第二个过程称为flush操作。 如果读完这篇文章有很多疑惑之处,请阅读es系列之前的文章:es系列:集群分布式架构及原理ES系列:集群、索引、搜索配置优化方案ES系列:elasticsearch的功能及Top 5大应用场景ES系列:elasticsearch基础知识汇总及常见面试题(一) 发布时间:2025-05-03 08:18:14 来源:阅天下 链接:https://www.haidaliao.com/html/41943.html