Elasticsearch - 获取具有字段名称的文档

Elasticsearch - get documents which have a field name

假设我将文档放入弹性搜索中,如下所示:

{
"name": "xyz",
"address": {
    "pincode": "111111",
    "area": "downtown"
    }
}

我想获取所有包含 pincode 的文档。当然,在ES中输入的一些文档可能没有pincode字段。

我尝试过类似的方法,但没有成功:

XGET _search
{
    "query": {
        "terms": {
        "_field_names": [ "pincode" ] 
        }
    }
}

您需要exists查询。

{
    "query" : {
        "filtered" : {
            "filter" : {
                "exists" : { "field" : "address.pincode" }
            }
        }
    }
}

您需要使用 missing filter. The exists filter 如果该字段在您的文档中完全缺失,将无法使用。

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must_not": [
            {
              "missing": {
                "field": "address.pincode"
              }
            }
          ]
        }
      }
    }
  }
}