如果字段存在,ElasticSearch如何删除文档?

时间:2018-03-13 02:08:20

标签: database elasticsearch

我想删除某个字段存在的所有文档

我尝试POST到 _delete_by_query API

{
  "query": { 
    "bool": {
      "must": [
        { "exists":"field_name" }
      ]
    }
  }
}

这给了我查询格式错误错误:

{
"error": {
    "root_cause": [
        {
            "type": "parsing_exception",
            "reason": "[exists] query malformed, no start_object after query name",
            "line": 1,
            "col": 37
        }
    ],
    "type": "parsing_exception",
    "reason": "[exists] query malformed, no start_object after query name",
    "line": 1,
    "col": 37
},
"status": 400
}

如果 field 存在,我该如何删除所有文档?

2 个答案:

答案 0 :(得分:2)

您的查询中存在错误:

您不必使用bool查询,只需使用以下查询即可。

{
"query": {
  "exists": {
    "field": "name"
  }
 }
}

阅读this了解详情。

希望这会有所帮助!!

答案 1 :(得分:1)

您不需要将存在包装在bool中。 试试这个

 {
  "query": { 
    "exists": {
      "field": "field_name"
    }
  }
}