有没有办法禁用Elasticsearch ID唯一性检查?

问题描述 投票:0回答:2

我有一个创建elasticsearch索引的项目。我正在努力提高写入速度。

我读过一些有关自动生成 ids 的内容。

Allowing Elasticsearch to generate ids on your behalf should increase document creation speed since Elasticsearch won’t need to check for uniqueness.

我不能使用它,因为我需要自己的 id 来搜索数据,但我可以保证我生成的 id 是唯一的。有没有办法禁用唯一性检查,以便我可以查看对性能的影响?

elasticsearch architecture backend elastic-stack software-design
2个回答
0
投票

如果您的索引始终是插入的(从不更新/更新插入),那么您可以只使用它们的 id (UUID) 并将您的 id 包含为索引字段。您仍然可以根据需要进行搜索。

诀窍是,如果您需要根据您的 id 更新文档,您将需要查看该文档是否已在索引中,这将需要唯一性检查,您不妨保留现有 id 并利用自动唯一性约束和段合并过程。


0
投票

在 Elasticsearch 中,每个文档在其索引中都必须有一个唯一标识符 (_id)。默认情况下,Elasticsearch 会执行检查以确保这些标识符的唯一性。但是,如果您确信生成的 ID 是唯一的,则可以禁用唯一性检查以潜在地提高写入速度。

要禁用 Elasticsearch 中文档 ID 的自动唯一性检查,您可以配置索引设置以禁用“index.mapping.auto_generate_id”选项。禁用此选项时,Elasticsearch 在索引期间不会检查文档 ID 的唯一性。

以下是禁用 ID 自动生成和文档 ID 唯一性检查的方法:

PUT /your_index_name
{
  "settings": {
    "index.mapping.auto_generate_id": false
  }
}

禁用自动生成 ID 后,您可以继续使用自己的唯一 ID 为文档建立索引。请记住,使用这种方法,Elasticsearch 不会对文档 ID 强制唯一性约束。因此,确保您提供的 ID 在索引中确实是唯一的至关重要。

通过禁用唯一性检查,您可能会观察到写入速度的提高,特别是在外部生成唯一 ID 比依赖 Elasticsearch 的内部检查更快的情况下。但是,请确保彻底测试性能影响并监控 Elasticsearch 集群的行为,以确保禁用唯一性检查符合您的性能要求并且不会损害数据完整性。

© www.soinside.com 2019 - 2024. All rights reserved.