es 的索引和数据是分开保存的吗?像 MySQL 中辅助索引那样对吗?那数据怎么保存呢?是像 Kafka 那样顺序存储吗?
把一个 index 划分到多个分区保存,那是不是每个分区保存了一份不同数据和其对应的倒排索引(即有多个倒排索引),还是说所有分区数据在某个地方共用一份公共的倒排索引(即一个 index 只有一个倒排索引)
我看别人博客中关于数据落盘,为啥没提到在插入数据时,倒排索引的调整,还是说 segment 文件不仅包含这 1s 中插入的所有文档,还包括这些文档生成的倒排索引,落盘时,再把这个 segment 的倒排索引与磁盘中倒排索引合并?
1
misaka19000 2022-01-01 14:19:48 +08:00
ES 底层用的是 Lucene 引擎,最终的数据读写都是用的 Lucene
|
2
misaka19000 2022-01-01 14:26:16 +08:00
1. ES 的索引是用 Lucene 保存的
2. 每一个分区(或者说 shards ,分片)都是一个独立的 Lucene 索引 3. Lucene 的文档是只写的,所以只有新增,没有合并 4. 可以设置字段的类型的,可以索引,也可以不索引 |
3
misaka19000 2022-01-01 14:26:44 +08:00
这些问题 ES 文档都有很详细的解释的,楼主多看看文档吧,ES 的文档写的很好的
|
4
yezheyu OP @misaka19000 多谢老哥解惑,第一点和第四点还是有点不太懂,能详细说下吗?或者贴个具体 es 文档地址,我看看
|
6
misaka19000 2022-01-01 23:38:15 +08:00
|
7
yezheyu OP @misaka19000 多谢老哥,翻了很多文档,大概都明白了
|