对嵌套对象的Elasticsearch查询

时间:2018-06-21 12:21:38

标签: elasticsearch

根据以下内容尝试使用嵌套字段查询特定索引

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "terms": {
                  "search_field": [
                    "search_key"
                  ]
                }
              }
            ]
          }
        },
        "nested": {
          "path": "defined_path",   //defined path is mapped nested
          "query": {
            "bool": {
              "must": [
                  {
                    "exists": {
                      "field": "defined_path.some_field"
                    }
                  }
                ]
            }
          }
        }
      ]
    }
  }
}

但是这往往会给出一些错误,并且语法(query_parsing_exception)显示为错误,但事实并非如此。 可能是什么问题?

1 个答案:

答案 0 :(得分:0)

您缺少将第二个必须条件封装在{}内的

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "terms": {
                  "search_field": [
                    "search_key"
                  ]
                }
              }
            ]
          }
        },
        {
          "nested": {
            "path": "defined_path",
            "query": {
              "bool": {
                "must": [
                  {
                    "exists": {
                      "field": "defined_path.some_field"
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }
}