嵌套类型的 Elasticsearch 通配符查询

Elasticseach wildcard query on nested types

我正在尝试 运行 对 ElasticSearch 中的嵌套类型进行通配符查询。我有以下结构的记录:

{
  "field_1": "value_1",
  "nested_field_1": [
    {
      "field_type": "some_field_type",
      "field_value": "some_value"
    },
    {
      "field_type": "another_field_type",
      "field_value": "another_value"
    }
  ]
}

我希望能够在 nested_field 或 field_valuefield_type 上 运行 通配符查询。

我可以使用以下语法查询完全匹配:

  "query": {
    "nested": {
      "path": "nested_field_1",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "nested_field_1.field_value": "another_value"
              }
            }
          ]
        }
      }
    }
  }
}

但是用 wildcard 替换 match 不会产生任何结果。 欢迎任何帮助。

所以我只是试了你的例子,它给了我结果并使用了 elasticsearch official wildcard query doc

索引定义

{
    "mappings": {
        "properties": {
            "field_1": {
                "type": "text"
            },
            "nested_field_1" :{
                "type" : "nested",
                "properties" : {
                    "field_type" :{
                        "type" : "text"
                    },
                    "field_value" :{
                        "type" : "integer" --> created as interfere field
                    }
                }
            }
        }
    }
}

索引文件

{
    "field_1": "value_1",
    "nested_field_1": [
        {
            "field_type": "some_field_type",
            "field_value": 20
        },
        {
            "field_type": "another_field_type",
            "field_value": 40
        }
    ]
}

通配符搜索查询

{
    "query": {
        "nested": {
            "path": "nested_field_1",
            "query": {
                "bool": {
                    "must": [
                        {
                            "wildcard": { --> note 
                                "nested_field_1.field_type": {
                                    "value": "another_field_type"
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
}

搜索结果

  "nested_field_1": [
                        {
                            "field_type": "some_field_type",
                            "field_value": 20
                        },
                        {
                            "field_type": "another_field_type",
                            "field_value": 40
                        }
                    ]
                }