You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python在Elasticsearch集群中按精确匹配规则搜索并删除文档

报错原因

delete_by_query 的请求体需要符合 Elasticsearch DSL 语法规范,不能直接将字段过滤条件放在 body 根节点,所有查询逻辑必须嵌套在 query 参数内部,你之前的写法不符合语法要求所以触发解析异常。

正确实现代码

如果需要精确匹配 name 为指定值的文档,使用如下代码即可:

from elasticsearch import Elasticsearch
es = Elasticsearch()

names = ['AB']
for name in names:
    es.delete_by_query(
        index="myindex",
        body={
            "query": {
                "term": {
                    # 如果你的name字段本身就是keyword类型,直接写"name": name即可
                    "name.keyword": name
                }
            }
        }
    )

补充说明

  • 如果你需要的是模糊匹配而非精确匹配,可以将 term 查询替换为 match 查询:
    "query": {
        "match": {
            "name": name
        }
    }
    
  • 如果待删除的文档量很大,可以添加 wait_for_completion=False 参数让删除任务异步执行,避免接口超时。

内容的提问来源于stack exchange,提问作者Maws

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:27:02