ElasticSearchdelete_by_query使用错误

vsnjm48y  于 2023-02-15  发布在  ElasticSearch
关注(0)|答案(2)|浏览(224)

我正在使用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}}})

第一个工作正常并返回预期的记录。
第二个抛出异常:
"传输错误(404,"{
"已找到":假,
"索引":"用户收藏夹文档",
"类型":"收藏夹文档",
"ID":"查询","版本":1,
"碎片":{"总计":2,"成功":2,"失败":0}}")
我哪里做错了?

9avjhtql

9avjhtql1#

我使用了版本6.2.0的弹性堆栈和API的使用工程删除如下:

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

如果您的值为INT,请删除message_value中的“”。

w80xi6nr

w80xi6nr2#

如果您运行的是ES的最新版本(5/6/7/8),_delete_by_query endpoint is supported natively。无需安装任何东西。
如果您运行的是ES 2.x,您需要确保首先安装了delete-by-query plugin
在ES_HOME文件夹中,运行以下命令:

bin/plugin install delete-by-query

然后重新启动ES,es.delete_by_query(...)调用将正常工作。
如果您运行的是ES 1.x,那么delete-by-query是核心的一部分,应该可以开箱即用。

相关问题