[英]Update all elasticsearch docs using a dict for input using Python
[英]Delete specific docs in elasticsearch using python
我是 ElasticSearch 的新手。 我正在尝试使用 python 从http://localhost:9200/es_index/es_type中删除一组数据。
假设x=['a','b','c','d','e','f']
是我要删除的_ids
列表
代码:
from elasticsearch import Elasticsearch
es = Elasticsearch()
request_body = {
"query": {
"ids": {
"values": ['a','b','c','d','e','f']
}
}
}
es.delete_by_query(index=es_index, body=request_body)
但是当我检查http://localhost:9200/es_index/es_type时,数据仍然存在。
请在评论中指定您的 ES 和elasticsearch-py
版本。 此外,您忘记在代码中提及es_index
的值,因此请确保传递正确的值。
如果索引设置正确, delete_by_query
的问题通常来自查询本身。 尝试使用相同的正文运行一个简单的search
,并检查您是否获得了所需的结果。 这样做总是明智的,以防止错误。
在您的情况下,您知道 id,因此使用es.delete
并传递 id 值更合适:
for id in ids:
es.delete(es_index=index, doc_type=_type, id=id)
对于许多文档,您应该考虑使用bulk
帮助程序来提高性能。 在这里查看答案。
另一个选项是 delete_by_query,您可以在其中直接传递 product_id 列表。
es = Elasticsearch()
def delete_by_id(index, ids):
query = {"query": {"terms": {"Product_Id":ids}}}
es.delete_by_query(index=index, body=query)code here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.