如何通过 Java API 从 ElasticSearch 中删除数据
How to delete data from ElasticSearch through JavaAPI
已编辑
我正在尝试找出如何根据条件从 Elasticsearch 中删除数据。我知道旧版本的 ElasticSearch 具有按查询删除功能,但它确实存在严重的性能问题,因此被删除了。我也知道有一个 Java 插件可以通过查询删除:
org.elasticsearch.plugin:查询删除:2.2.0
但我不知道它是否有更好的删除实现,性能更好,还是与旧版本相同。
另外,有人建议使用滚动删除数据,但我知道如何滚动检索数据,而不是如何使用滚动删除!
有没有人知道(在一次通话中要删除的文档数量会很大,超过 50k 个文档。
提前致谢!
终于用上了这个guy's third option
你想使用 scroll/scan 是正确的。以下是步骤:
- 开始新的scroll/scan
- 获取下 N 条记录
- 从每条记录中获取 ID 并对这些 ID 进行批量删除
- 返回第 2 步
所以您不完全使用 scroll/scan 删除,您只是将其用作获取要删除的记录的所有 ID 的工具。通过这种方式,您一次只删除 N 条记录,而不是 1 个块中的所有 50,000 条记录(这会给您带来各种问题)。
已编辑 我正在尝试找出如何根据条件从 Elasticsearch 中删除数据。我知道旧版本的 ElasticSearch 具有按查询删除功能,但它确实存在严重的性能问题,因此被删除了。我也知道有一个 Java 插件可以通过查询删除:
org.elasticsearch.plugin:查询删除:2.2.0
但我不知道它是否有更好的删除实现,性能更好,还是与旧版本相同。
另外,有人建议使用滚动删除数据,但我知道如何滚动检索数据,而不是如何使用滚动删除!
有没有人知道(在一次通话中要删除的文档数量会很大,超过 50k 个文档。
提前致谢!
终于用上了这个guy's third option
你想使用 scroll/scan 是正确的。以下是步骤:
- 开始新的scroll/scan
- 获取下 N 条记录
- 从每条记录中获取 ID 并对这些 ID 进行批量删除
- 返回第 2 步
所以您不完全使用 scroll/scan 删除,您只是将其用作获取要删除的记录的所有 ID 的工具。通过这种方式,您一次只删除 N 条记录,而不是 1 个块中的所有 50,000 条记录(这会给您带来各种问题)。