Elasticsearch - 嵌套字段没有结果

时间:2018-03-06 20:58:24

标签: elasticsearch

我做错了什么?我从嵌套属性中得不到任何结果:

GET my_app_name/my_model/_search
{"query": {"match_all": {} } }

# results
"hits": [
  {
    "_index": "my_app_name",
    "_type": "my_model",
    "_score": 1,
    "_source": {
      "categories": [
        {
          "name": "SomeCategoryName"
        }
      ]
    }
  }
 ]

我的映射:

{
  "my_app_name": {
    "mappings": {
      "my_model": {
        "properties": {
          "categories": {
            "type": "nested",
            "properties": {
              "name": {
                "type": "text"
              }
            }
          }
        }
      }
    }
  }
}

我的查询

# GET my_app_name/my_model/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "categories.name": "SomeCategoryName"
        }}
      ]
    }

  }
}

也试过这个

# GET my_app_name/my_model/_search
{
  "query": {"match": {
    "categories.name": "SomeCategoryName"
  }}
}

1 个答案:

答案 0 :(得分:0)

嵌套对象被视为单独的文档,因此查询中需要nested

GET my_app_name/my_model/_search
{
  "query": {
    "nested": {
      "path": "categories",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "categories.name": "SomeCategoryName"
              }
            }
          ]
        }
      }
    }
  }
}

参考:nested-query-dsl