从python

时间:2016-02-18 12:29:57

标签: python elasticsearch elasticsearch-py

使用elasticsearch-py,我想删除特定索引中的所有文档,而不删除索引。鉴于delete_by_query被转移到一个单独的插件,我想知道最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

通过查询删除删除所有文档非常低效。更直接和正确的行动是:

  • 获取当前映射(假设您没有使用索引模板)
  • DELETE /indexname
  • 删除索引
  • 创建新索引和映射。

这需要一秒钟,前者需要花费更多时间和不必要的磁盘I / O

答案 1 :(得分:0)

使用Scroll / Scan API调用收集所有文档ID,然后对这些ID调用批量删除。这是基于the official documentation的“按查询删除API”的推荐替代品。

编辑:在elasticsearch-py中专门使用此信息的请求信息。以下是helpers的文档。使用扫描帮助程序扫描所有文档。使用批量助手和删除操作删除所有ID。