1

我有以下映射

{
  "properties": {
    "restaurant_name": {"type": "string"},
    "menu": {
      "type": "nested",
      "properties": {
        "name": {"type": "string"}
      }
    }
  }
}

我正在尝试过滤所有存在可选“菜单”字段的文档

GET /restaurnats/_search
{
  "filter": {
    "query": {
      "bool": {
        "must": [
          {"exists" : { "field" : "menu" }}
        ]
      }
    }
  }
}

但是,当我尝试使用相同的查询来过滤那些具有“restaurant_name”的文档时,它可以正常工作。那么为什么嵌套字段检查不起作用呢?如何让它工作?

4

1 回答 1

4

您需要改用nested查询:

{
  "filter": {
    "query": {
      "nested": {
        "path": "menu",
        "query": {
          "bool": {
            "must": [
              {
                "exists": {
                  "field": "menu"
                }
              }
            ]
          }
        }
      }
    }
  }
}
于 2016-11-08T05:14:51.690 回答