查询字符串和嵌套的类型(elasticsearch)

时间:2019-05-16 12:09:38

标签: elasticsearch

这是我的映射:

{
  "name": {
    "type": "text",
  },
  "my_array": {
    "type": "nested",
    "properties": {
      "first": {
        "type": "text",
      },
      "last": {
        "type": "text",
      }
    }
  }
}

文档1:

{
  "my_array": [
    { "first": "John", "last": "Smith" },
    { "first": "Alice", "last": "White" }
  ]
}

文档2:

{
  "name": "John"
}

是否可以使此查询字符串查询不使用nested query返回两个文档?

{
  "query": {
    "query_string": {
      "query": "John"
    }
  }
}

我正在使用Elasticsearch 6.4。

1 个答案:

答案 0 :(得分:0)

是的,您可以将query_string查询嵌套在对两个嵌套字段都适用的nested查询中,如下所示:

POST test/_search
{
  "query": {
    "bool": {
      "minimum_should_match": 1,
      "should": [
        {
          "nested": {
            "path": "my_array",
            "query": {
              "query_string": {
                "default_field": "my_array.*",
                "query": "John"
              }
            }
          }
        },
        {
          "query_string": {
            "default_field": "name",
            "query": "John"
          }
        }
      ]
    }
  }
}