最近在学 Elasticsearch,有点疑问求教

2022-01-01 12:41:59 +08:00
 yezheyu
  1. es 的索引和数据是分开保存的吗?像 MySQL 中辅助索引那样对吗?那数据怎么保存呢?是像 Kafka 那样顺序存储吗?

  2. 把一个 index 划分到多个分区保存,那是不是每个分区保存了一份不同数据和其对应的倒排索引(即有多个倒排索引),还是说所有分区数据在某个地方共用一份公共的倒排索引(即一个 index 只有一个倒排索引)

  3. 我看别人博客中关于数据落盘,为啥没提到在插入数据时,倒排索引的调整,还是说 segment 文件不仅包含这 1s 中插入的所有文档,还包括这些文档生成的倒排索引,落盘时,再把这个 segment 的倒排索引与磁盘中倒排索引合并?

  1. 存入 es 的一条数据,像文章这样 text 字段,需要分词,然后存入对应的倒排索引中,那像其它 id ,age ,name 之类的单个词字段,不需要分词,那 es 会对它们建立倒排索引吗?还是像 MySQL 那样由你自己决定对哪些字段建索引
2427 次点击
所在节点    程序员
7 条回复
misaka19000
2022-01-01 14:19:48 +08:00
ES 底层用的是 Lucene 引擎,最终的数据读写都是用的 Lucene
misaka19000
2022-01-01 14:26:16 +08:00
1. ES 的索引是用 Lucene 保存的
2. 每一个分区(或者说 shards ,分片)都是一个独立的 Lucene 索引
3. Lucene 的文档是只写的,所以只有新增,没有合并
4. 可以设置字段的类型的,可以索引,也可以不索引
misaka19000
2022-01-01 14:26:44 +08:00
这些问题 ES 文档都有很详细的解释的,楼主多看看文档吧,ES 的文档写的很好的
yezheyu
2022-01-01 22:33:14 +08:00
@misaka19000 多谢老哥解惑,第一点和第四点还是有点不太懂,能详细说下吗?或者贴个具体 es 文档地址,我看看
yezheyu
2022-01-01 22:34:29 +08:00
@yezheyu 写错了,是第 1 个问题和第 3 个问题
misaka19000
2022-01-01 23:38:15 +08:00
https://juejin.cn/post/6844903914047815693

随便找了个,感觉写的还行
yezheyu
2022-01-02 10:18:46 +08:00
@misaka19000 多谢老哥,翻了很多文档,大概都明白了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825643

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX