首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticseach对嵌套类型的通配符查询

Elasticseach对嵌套类型的通配符查询
EN

Stack Overflow用户
提问于 2020-04-02 14:58:57
回答 1查看 31关注 0票数 2

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

代码语言:javascript
复制
{
  "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_value上还是在field_type上。

我可以使用以下语法查询精确匹配:

代码语言:javascript
复制
  "query": {
    "nested": {
      "path": "nested_field_1",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "nested_field_1.field_value": "another_value"
              }
            }
          ]
        }
      }
    }
  }
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-02 15:13:44

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

索引定义

代码语言:javascript
复制
{
    "mappings": {
        "properties": {
            "field_1": {
                "type": "text"
            },
            "nested_field_1" :{
                "type" : "nested",
                "properties" : {
                    "field_type" :{
                        "type" : "text"
                    },
                    "field_value" :{
                        "type" : "integer" --> created as interfere field
                    }
                }
            }
        }
    }
}

索引文档

代码语言:javascript
复制
{
    "field_1": "value_1",
    "nested_field_1": [
        {
            "field_type": "some_field_type",
            "field_value": 20
        },
        {
            "field_type": "another_field_type",
            "field_value": 40
        }
    ]
}

通配符搜索查询

代码语言:javascript
复制
{
    "query": {
        "nested": {
            "path": "nested_field_1",
            "query": {
                "bool": {
                    "must": [
                        {
                            "wildcard": { --> note 
                                "nested_field_1.field_type": {
                                    "value": "another_field_type"
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
}

搜索结果

代码语言:javascript
复制
  "nested_field_1": [
                        {
                            "field_type": "some_field_type",
                            "field_value": 20
                        },
                        {
                            "field_type": "another_field_type",
                            "field_value": 40
                        }
                    ]
                }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60985842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档