如何通过 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 是正确的。以下是步骤:

  1. 开始新的scroll/scan
  2. 获取下 N 条记录
  3. 从每条记录中获取 ID 并对这些 ID 进行批量删除
  4. 返回第 2 步

所以您不完全使用 scroll/scan 删除,您只是将其用作获取要删除的记录的所有 ID 的工具。通过这种方式,您一次只删除 N 条记录,而不是 1 个块中的所有 50,000 条记录(这会给您带来各种问题)。