简体   繁体   English

弹性搜索。 嵌套的嵌套查询

[英]Elasticsearch. Nested query for nested in nested

My mapping is (part of it):我的映射是(其中的一部分):

$index =  [
"mappings" => [
    "goods" => [
        "dynamic_templates"=> [
                        [
                            "iattribute_id"=> [
                                "match_mapping_type"=> "string",
                                "match"=>   "attribute_id",
                                "mapping"=> [
                                    "type"=> "integer"
                                ]
                            ]
                        ],
                        [
                            "iattribute_value"=> [
                                "match_mapping_type"=> "string",
                                "match"=>   "attribute_value",
                                "mapping"=> [
                                    "type"=> "string",
                                    "index" => "not_analyzed"
                                ]
                            ]
                        ]
                    ],
        "properties" => [
            ...
            "individual_attributes" => [
                            "type" => "nested",
                            "properties" => [
                                "template_id" => ["type" => "integer"],
                                "attributes_set" => [
                                    "type" => "nested",
                                    "properties" => [
                                        "attribute_id" => ["type" => "integer"],
                                        "attribute_value" => ["type" => "string", "index" => "not_analyzed"]
                                    ]
                                ]
                            ]
                        ]
            ...
        ]
    ]
]
];

How can I query attribute_id and attribute_value ?如何查询attribute_idattribute_value They are nested inside nested.它们嵌套在嵌套中。 I can't understand how to specify path to fields.我无法理解如何指定字段的路径。 I've composed query but it doesn't work.我已经编写了查询,但它不起作用。

GET /index/type/_search
{
"query" : {
  "nested" : {
    "path" : "individual_attributes.attributes_set",
    "score_mode" : "none",
      "filter": {
        "bool": {
          "must": [
            {
              "term" : {
                "individual_attributes.attributes_set.attribute_id": "20"
              }
            },
            {
              "term" : {
                "individual_attributes.attributes_set.attribute_value": "commodi"
              }
            }
          ]
        }
      }
    }
  }

}

Try this:尝试这个:

{
  "query": {
    "nested": {
      "path": "individual_attributes",
      "score_mode": "none",
      "filter": {
        "nested": {
          "path": "individual_attributes.attributes_set",
          "query": {
            "bool": {
              "must": [
                {
                  "term": {
                    "individual_attributes.attributes_set.attribute_id": "20"
                  }
                },
                {
                  "term": {
                    "individual_attributes.attributes_set.attribute_value": "commodi"
                  }
                }
              ]
            }
          }
        }
      }
    }
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM