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

Are IDs guaranteed to be unique across indices in Elasticsearch 6+?

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

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

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

显式 ID

如果您在编制索引时明确设置文档 ID,没有什么能阻止您对不同索引中的文档使用相同的 ID 两次。

自动生成的 ID

如果在索引时设置ID,ES会在存储文档前生成一个。
根据 code,ID 是从随机数、主机 MAC 地址和以毫秒为单位的当前时间戳安全生成的。完成额外的工作以确保时间戳(以及 ID 序列)单调增加。

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

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