从 python 中的 ElasticSearch 索引中删除文档
Delete documents from ElasticSearch index in python
使用 elasticsearch-py,我想从特定索引中删除所有文档,而不删除索引。鉴于 delete_by_query
已移至单独的插件,我想知道解决此问题的最佳方法是什么?
使用 Scroll/Scan API 调用来收集所有文档 ID,然后对这些 ID 调用批量删除。这是基于 the official documentation.
的 Delete By Query API 的推荐替代品
编辑:请求在 elasticsearch-py 中专门使用它的信息。这是 helpers 的文档。使用扫描助手扫描所有文档。使用带有删除操作的批量助手来删除所有 ID。
通过查询删除的方式删除所有文档,效率非常低。更直接正确的做法是:
- 获取当前映射(假设您没有使用索引模板)
- 将索引降低
DELETE /indexname
- 正在创建新索引和映射。
这会花一秒钟,前者会花很多很多时间和不必要的磁盘I/O
使用 elasticsearch-py,我想从特定索引中删除所有文档,而不删除索引。鉴于 delete_by_query
已移至单独的插件,我想知道解决此问题的最佳方法是什么?
使用 Scroll/Scan API 调用来收集所有文档 ID,然后对这些 ID 调用批量删除。这是基于 the official documentation.
的 Delete By Query API 的推荐替代品编辑:请求在 elasticsearch-py 中专门使用它的信息。这是 helpers 的文档。使用扫描助手扫描所有文档。使用带有删除操作的批量助手来删除所有 ID。
通过查询删除的方式删除所有文档,效率非常低。更直接正确的做法是:
- 获取当前映射(假设您没有使用索引模板)
- 将索引降低
DELETE /indexname
- 正在创建新索引和映射。
这会花一秒钟,前者会花很多很多时间和不必要的磁盘I/O