0

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

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

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

我尝试过这样的事情,但没有成功:

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

2 回答 2

1

您需要使用missing过滤器。如果您的文档中完全缺少该字段,则exists过滤器将不起作用。

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must_not": [
            {
              "missing": {
                "field": "address.pincode"
              }
            }
          ]
        }
      }
    }
  }
}
于 2016-03-22T15:04:43.177 回答
1

您需要存在查询。

{
    "query" : {
        "filtered" : {
            "filter" : {
                "exists" : { "field" : "address.pincode" }
            }
        }
    }
}
于 2016-03-22T14:11:46.313 回答