我使用2个类似的ES方法来加载和删除文档:
result = es.search(index='users_favourite_documents',
doc_type='favourite_document',
body={"query": {"match": {'user': user}}})
和
result = es.delete_by_query(index='users_favourite_documents',
doc_type='favourite_document',
body={"query": {"match": {'user': user}}})
第一个正常工作并返回预期记录 第二个抛出异常:
“TransportError(404,”{
\ “找到\”:虚假,
\ “_指数\”:\ “users_favourite_documents \”,
\ “_类型\”:\ “favourite_document \”,
\ “_ ID \”:\ “_查询\”, \ “_版\”:1,
\ “_碎片\”:{\ “总\”:2,\ “成功\”:2, \ “失败\”:0}}')“
我做错了什么?
答案 0 :(得分:2)
如果您正在运行ES 2.x,则需要确保先安装delete-by-query plugin:
在ES_HOME文件夹中,运行以下命令:
bin/plugin install delete-by-query
然后重新启动ES,您的es.delete_by_query(...)
电话将会正常工作。
如果你正在运行ES 1.x,那么逐个查询是核心的一部分,它应该是开箱即用的。
答案 1 :(得分:1)
我使用的是Elastic Stack的6.2.0版本,并且API的使用可以像这样删除:
es.delete_by_query(index="index_name", doc_type='doc_type', body={"query":{"match": {"message": "message_value"}}})
如果您的值为INT,请删除message_value中的“”。