使用 elasticsearch-py,我想从特定索引中删除所有文档,而不删除索引。鉴于delete_by_query
被移动到一个单独的插件,我想知道最好的方法是什么?
通过查询删除来删除所有文档效率非常低。更直接、更正确的行动是:
- 获取当前映射(假设您没有使用索引模板)
- 将索引删除
DELETE /indexname
- 创建新索引和映射。
这将需要一秒钟,前者将花费更多的时间和不必要的磁盘I/O
使用滚动/扫描 API 调用收集所有文档 ID,然后对这些 ID 调用批量删除。这是基于官方文档的按查询删除 API 的建议替代。
编辑:请求的信息,特别是在 elasticsearch-py 中使用它。以下是帮助程序的文档。使用扫描帮助程序扫描所有文档。将批量帮助程序与删除操作结合使用以删除所有 ID。