Elasticsearch delete_by_query wrong usage

蹲街弑〆低调 提交于 2019-12-12 01:24:24

问题


I am using 2 similar ES methods to load and delete documents:

result = es.search(index='users_favourite_documents',
                   doc_type='favourite_document',
                   body={"query": {"match": {'user': user}}})

And:

result = es.delete_by_query(index='users_favourite_documents',
                            doc_type='favourite_document',
                            body={"query": {"match": {'user': user}}})

First one works ok and returns expected records.
Second one throws Exception:

"TransportError(404,'{
\"found\":false,
\"_index\":\"users_favourite_documents\",
\"_type\":\"favourite_document\",
\"_id\":\"_query\", \"_version\":1,
\"_shards\":{\"total\":2,\"successful\":2, \"failed\":0}}')"

What am I doing wrong?


回答1:


If you're running ES 2.x, you need to make sure that you have installed the delete-by-query plugin first:

In your ES_HOME folder, run this:

bin/plugin install delete-by-query

Then restart ES and your es.delete_by_query(...) call will work.

If you're running ES 1.x, then delete-by-query is part of the core and that should work out of the box.




回答2:


I'v used version 6.2.0 of the Elastic Stack and the use of the API works for deleting like this:

es.delete_by_query(index="index_name", doc_type='doc_type', body={"query":{"match": {"message": "message_value"}}})

if your value is INT remove the "" in message_value.



来源:https://stackoverflow.com/questions/39328892/elasticsearch-delete-by-query-wrong-usage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!