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

时间:2019-02-21 09:48:42

标签: elasticsearch

我正在使用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仅与顶级字段匹配,而不与嵌套字段匹配。 有没有办法查询包含嵌套字段在内的所有字段中的文本。我不想明确指定嵌套的字段名称。 我正在寻找一种全球搜索,我想在其中搜索“文本” 文档中的任何地方。

谢谢。

1 个答案:

答案 0 :(得分:0)

好。得到它的工作。 我已经设置了映射dynamic:false。看起来ES只会在字段中搜索 在映射中指定,并且我的搜索字在动态添加的字段中。

使用dynamic:'strict'帮助我缩小了范围。