弹性搜索查询所有字段,包括嵌套字段

问题描述 投票:0回答:1

我使用的是ES 5.6版。我在ES中存储了如下文档。

{
  "swType": "abc",
  "swVersion": "xyz",
  "interfaces": [
     {
        "autoneg": "enabled",
        "loopback": "disabled",
        "duplex": "enabled"
     },
     {
        "autoneg": "enabled",
        "loopback": "disabled",
        "duplex": "enabled"
     }
  ]
}

我想搜索已“启用”的所有字段。

我尝试了以下查询,但它们没有用。

curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match":{
       "_all": "enabled"
     }
   }
}'



curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
        {
          "query": {
            "query_string": {
              "query": "enabled",
              "fields": ["*"]
            }
          }
        }'

但是下面的查询有效

curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match":{
       "_all": "abc"
     }
   }
}'

所以,看起来_all只匹配顶级字段而不是嵌套字段。有没有办法查询包含嵌套的所有字段中包含的文本。我不想明确指定嵌套字段名称。我正在寻找一种全局搜索,我想在文档中的任何地方搜索“文本”。

谢谢。

elasticsearch
1个回答
0
投票

好。搞定了。我设置了映射dynamic:false。看起来ES只会在映射中指定的字段中搜索,而我在动态添加的字段中搜索我的搜索词。

制作dynamic:'strict'帮助我缩小了问题范围。

© www.soinside.com 2019 - 2024. All rights reserved.