在Elasticsearch 6+中,ID是否保证在索引中是唯一的?

时间:2018-02-07 12:44:03

标签: elasticsearch search elasticsearch-6

如果Elasticsearch 6.0中的映射类型为removed,我想知道文档的ID是否保证在索引中是唯一的?

假设我有三个索引,所有索引都包含一个包含ID的“父”字段。我是否需要包含ID所属的索引,或者在查找具有给定ID的文档时是否可以搜索所有三个索引?

2 个答案:

答案 0 :(得分:4)

ID在索引中不是唯一的。 如果要引用文档,则需要知道索引名称和ID。

答案 1 :(得分:0)

显式ID

如果您在建立索引时明确设置了文档ID,则没有什么可以防止您两次对使用不同索引的文档使用相同的ID。

自动生成的ID

如果设置索引时的ID,ES将在存储文档之前生成一个ID。
根据{{​​3}},该ID是根据随机数,主机MAC地址和当前时间戳(以毫秒为单位)安全生成的。为了确保时间戳(以及ID序列)单调增加,还需要进行其他工作。

要生成相同的ID,当JVM启动时,必须选择一个特定的随机数,并且必须在特定时刻以亚毫秒精度生成文档ID。 因此,尽管存在机会,但它是如此之小,以至于我不在乎。(就像我在使用哈希函数检查文件完整性时不在乎冲突一样)

最后的注释:如代码注释所述,实现是不透明的,并且随时可能更改,因此我写的内容在将来的版本中可能不成立。