从 Python 3.x 中的 elasticsearch 索引中删除所有文档

Hub*_*dek 5 python python-3.x elasticsearch

如何从索引中删除 Elasticsearch 中的所有文档而不删除索引本身?

from elasticsearch import Elasticsearch
es = Elasticsearch("http://elasticsearch.internal:9200")

Elasticsearch.delete(es, index="index")
Run Code Online (Sandbox Code Playgroud)

回复

TypeError: delete() missing 1 required positional argument: 'id'
Run Code Online (Sandbox Code Playgroud)

sql中是否有像truncate table这样的选项。我知道我可以循环所有 id 并删除它们中的每一个,但也许有一些带有通配符的魔法选项。

Olu*_*ule 9

Elasticsearch.delete_by_query 方法可用于删除与查询匹配的文档。

https://elasticsearch-py.readthedocs.io/en/master/api.html#elasticsearch.Elasticsearch.delete_by_query

indices = ['index1', 'index2', 'other-index-names']
es.delete_by_query(index=indices, body={"query": {"match_all": {}}})
Run Code Online (Sandbox Code Playgroud)