0

我正在使用 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,'{
\"found\":false,
\"_index\":\"users_favourite_documents\",
\"_type\":\"favourite_document\",
\"_id\":\"_query\" , \"_version\":1,
\"_shards\":{\"total\":2,\"successful\":2, \"failed\":0}}')"

我究竟做错了什么?

4

2 回答 2

4

我使用了 6.2.0 版的 Elastic Stack,并且使用 API 可以像这样删除:

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

如果您的值是 INT,则删除 message_value 中的“”。

于 2018-02-27T10:52:54.987 回答
2

如果你运行的是 ES 2.x,你需要确保你首先安装了delete-by-query 插件

在您的 ES_HOME 文件夹中,运行以下命令:

bin/plugin install delete-by-query

然后重新启动 ES,你的es.delete_by_query(...)电话就可以工作了。

如果你运行的是 ES 1.x,那么 delete-by-query 是核心的一部分,应该可以开箱即用。

于 2016-09-05T11:14:26.833 回答