2016-09-28 86 views
0

我与Elasticsearch聚集的工作,这是我的映射:Elastcisearch动态聚合|过滤器建设

"products": { 
    "mappings": { 
    "product": { 
     ... 
    "properties": { 
     "skus": { 
     "type": "nested", 
     "properties": { 
      "availabilities": { 
      "type": "nested", 
      "properties": { 
       "crossed_price": { 
       "type": "float" 
       }, 
       "discount": { 
       "type": "float" 
       }, 
       "price": { 
       "type": "float", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       }, 
       "price_per_unit": { 
       "type": "nested", 
       "properties": { 
        "crossed_price": { 
        "type": "float" 
        }, 
        "price": { 
        "type": "float" 
        }, 
        "unit": { 
        "type": "string", 
        "fields": { 
         "raw": { 
         "type": "string", 
         "index": "not_analyzed" 
         } 
        } 
        } 
       } 
       }, 
       "shop_id": { 
       "type": "string", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       }, 
       "stock": { 
       "type": "float" 
       } 
      } 
      }, 
      "desc": { 
      "type": "nested", 
      "properties": { 
       "lang": { 
       "type": "string", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       }, 
       "text": { 
       "type": "string", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       } 
      } 
      }, 
      "ean": { 
      "type": "string", 
      "fields": { 
       "raw": { 
       "type": "string", 
       "index": "not_analyzed" 
       } 
      } 
      }, 
      "id": { 
      "type": "string", 
      "fields": { 
       "raw": { 
       "type": "string", 
       "index": "not_analyzed" 
       } 
      } 
      }, 
      "medias": { 
      "type": "nested", 
      "properties": { 
       "generated": { 
       "type": "boolean" 
       }, 
       "hash": { 
       "type": "string", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       }, 
       "source": { 
       "type": "string", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       }, 
       "type": { 
       "type": "string", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       } 
      } 
      }, 
      "name": { 
      "type": "nested", 
      "properties": { 
       "lang": { 
       "type": "string", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       }, 
       "text": { 
       "type": "string", 
       "fields": { 
        "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
        } 
       } 
       } 
      } 
      }, 
      "notify_stock": { 
      "type": "integer" 
      }, 
      "popularity": { 
      "type": "float" 
      }, 
      "specs": { 
      "type": "nested", 
      "properties": { 
       "id": { 
       "type": "string" 
       }, 
       "spec": { 
       "type": "nested", 
       "properties": { 
        "lang": { 
        "type": "string", 
        "fields": { 
         "raw": { 
         "type": "string", 
         "index": "not_analyzed" 
         } 
        } 
        }, 
        "text": { 
        "type": "string", 
        "fields": { 
         "raw": { 
         "type": "string", 
         "index": "not_analyzed" 
         } 
        } 
        } 
       } 
       }, 
       "unit": { 
       "type": "nested", 
       "properties": { 
        "lang": { 
        "type": "string", 
        "fields": { 
         "raw": { 
         "type": "string", 
         "index": "not_analyzed" 
         } 
        } 
        }, 
        "text": { 
        "type": "string", 
        "fields": { 
         "raw": { 
         "type": "string", 
         "index": "not_analyzed" 
         } 
        } 
        } 
       } 
       }, 
       "value": { 
       "type": "nested", 
       "properties": { 
        "lang": { 
        "type": "string", 
        "fields": { 
         "raw": { 
         "type": "string", 
         "index": "not_analyzed" 
         } 
        } 
        }, 
        "text": { 
        "type": "string", 
        "fields": { 
         "raw": { 
         "type": "string", 
         "index": "not_analyzed" 
         } 
        } 
        } 
       } 
       } 
      } 
      }, 
      "status": { 
      "type": "string" 
      }, 
      "unit": { 
      "properties": { 
       "lang": { 
       "type": "string" 
       }, 
       "text": { 
       "type": "string" 
       } 
      } 
      } 
     } 
     } 
    ... 
} 

我想有针对产品,为构建基于规范值过滤器聚集。我正在处理多语言规范 - >以获取基于specs.spec.lang的多语言过滤器。

这是我的请求:

 { 
      "size": 0, 
       "aggs": { 
      "skus": { 
       "nested": { 
       "path": "skus" 
       }, 
       "aggs": { 
       "skus.specs": { 
        "nested": { 
        "path": "skus.specs" 
        }, 
        "aggs": { 
        "skus.specs.spec": { 
         "nested": { 
         "path": "skus.specs.spec" 
         }, 
         "aggs": { 
         "skus.specs.spec.text": { 
          "terms": { 
          "field": "skus.specs.spec.text.raw" 
          }, 
          "aggs": { 
          "skus.specs.value": { 
           "nested": { 
           "path": "skus.specs.value" 
           }, 
           "aggs": { 
           "skus.specs.value.text": { 
            "terms": { 
            "field": "skus.specs.value.text.raw" 
            } 
           } 
           } 
          } 
          } 
         } 
         } 
        } 
        } 
       } 
       } 
      } 
      } 
     } 

问题:嵌套AGGS的值被混合

{ 
       "took": 52, 
       "timed_out": false, 
       "_shards": { 
       "total": 3, 
       "successful": 3, 
       "failed": 0 
       }, 
       "hits": { 
       "total": 5020, 
       "max_score": 0, 
       "hits": [] 
       }, 
       "aggregations": { 
       "skus": { 
        "doc_count": 10258, 
        "skus.specs": { 
        "doc_count": 41678, 
        "skus.specs.spec": { 
         "doc_count": 41678, 
         "skus.specs.spec.text": { 
         "doc_count_error_upper_bound": 0, 
         "sum_other_doc_count": 0, 
         "buckets": [ 
          { 
          "key": "Contenance", 
          "doc_count": 9603, 
          "skus.specs.value": { 
           "doc_count": 9602, 
           "skus.specs.value.text": { 
           "doc_count_error_upper_bound": 58, 
           "sum_other_doc_count": 3600, 
           "buckets": [ 
            { 
            "key": "Haute", 
            "doc_count": 1642 
            }, 
            { 
            "key": "Moyenne", 
            "doc_count": 1437 
            }, 
            { 
            "key": "Tube", 
            "doc_count": 571 
            }, 
            { 
            "key": "Flacon", 
            "doc_count": 466 
            }, 
            { 
            "key": "Pot", 
            "doc_count": 406 
            }, 
            { 
            "key": "Flacon pompe", 
            "doc_count": 397 
            }, 
            { 
            "key": "Faible", 
            "doc_count": 331 
            }, 
            { 
            "key": "Floral", 
            "doc_count": 322 
            }, 
            { 
            "key": "Floral fruité", 
            "doc_count": 244 
            }, 
            { 
            "key": "Frais (hespéridé)", 
            "doc_count": 186 
            } 
           ] 
           } 
          } 
          }, 
          { 
          "key": "Format", 
          "doc_count": 7988, 
          "skus.specs.value": { 
           "doc_count": 7985, 
           "skus.specs.value.text": { 
           "doc_count_error_upper_bound": 36, 
           "sum_other_doc_count": 2363, 
           "buckets": [ 
            { 
            "key": "Moyen", 
            "doc_count": 1291 
            }, 
            { 
            "key": "Clair", 
            "doc_count": 1095 
            }, 
            { 
            "key": "Crème", 
            "doc_count": 782 
            }, 
            { 
            "key": "Foncé", 
            "doc_count": 686 
            }, 
            { 
            "key": "Fluide", 
            "doc_count": 394 
            }, 
            { 
            "key": "50", 
            "doc_count": 342 
            }, 
            { 
            "key": "100", 
            "doc_count": 314 
            }, 
            { 
            "key": "Liquide", 
            "doc_count": 271 
            }, 
            { 
            "key": "Ethnique", 
            "doc_count": 229 
            }, 
            { 
            "key": "Gel", 
            "doc_count": 218 
            } 
           ] 
           } 
          } 
          }, 
          { 
          "key": "Texture", 
          "doc_count": 6119, 
          "skus.specs.value": { 
           "doc_count": 6096, 
           "skus.specs.value.text": { 
           "doc_count_error_upper_bound": 55, 
           "sum_other_doc_count": 2727, 
           "buckets": [ 
            { 
            "key": "Eclat", 
            "doc_count": 1026 
            }, 
            { 
            "key": "Hydrate", 
            "doc_count": 654 
            }, 
            { 
            "key": "Uniformise", 
            "doc_count": 364 
            }, 
            { 
            "key": "Protège", 
            "doc_count": 295 
            }, 
            { 
            "key": "30", 
            "doc_count": 211 
            }, 
            { 
            "key": "Anti rides", 
            "doc_count": 208 
            }, 
            { 
            "key": "1", 
            "doc_count": 178 
            }, 
            { 
            "key": "Repulpe", 
            "doc_count": 170 
            }, 
            { 
            "key": "100", 
            "doc_count": 132 
            }, 
            { 
            "key": "Matifie", 
            "doc_count": 131 
            } 
           ] 
           } 
          } 
          }, 
          { 
          "key": "Action", 
          "doc_count": 4779, 
          "skus.specs.value": { 
           "doc_count": 4779, 
           "skus.specs.value.text": { 
           "doc_count_error_upper_bound": 27, 
           "sum_other_doc_count": 1847, 
           "buckets": [ 
            { 
            "key": "30", 
            "doc_count": 595 
            }, 
            { 
            "key": "50", 
            "doc_count": 553 
            }, 
            { 
            "key": "10", 
            "doc_count": 322 
            }, 
            { 
            "key": "4", 
            "doc_count": 288 
            }, 
            { 
            "key": "15", 
            "doc_count": 255 
            }, 
            { 
            "key": "200", 
            "doc_count": 227 
            }, 
            { 
            "key": "3", 
            "doc_count": 214 
            }, 
            { 
            "key": "6", 
            "doc_count": 173 
            }, 
            { 
            "key": "150", 
            "doc_count": 160 
            }, 
            { 
            "key": "100", 
            "doc_count": 145 
            } 
           ] 
           } 
          } 
          }, 
          { 
          "key": "Effet", 
          "doc_count": 4047, 
          "skus.specs.value": { 
           "doc_count": 4047, 
           "skus.specs.value.text": { 
           "doc_count_error_upper_bound": 2, 
           "sum_other_doc_count": 380, 
           "buckets": [ 
            { 
            "key": "Flacon", 
            "doc_count": 927 
            }, 
            { 
            "key": "Tube", 
            "doc_count": 725 
            }, 
            { 
            "key": "Stick", 
            "doc_count": 608 
            }, 
            { 
            "key": "Solide", 
            "doc_count": 360 
            }, 
            { 
            "key": "Flacon pompe", 
            "doc_count": 278 
            }, 
            { 
            "key": "Crayon", 
            "doc_count": 245 
            }, 
            { 
            "key": "Pot", 
            "doc_count": 242 
            }, 
            { 
            "key": "Stylo", 
            "doc_count": 125 
            }, 
            { 
            "key": "Pinceau", 
            "doc_count": 99 
            }, 
            { 
            "key": "Moyen", 
            "doc_count": 58 
            } 
           ] 
           } 
          } 
          }, 
          { 
          "key": "Couvrance", 
          "doc_count": 3546, 
          "skus.specs.value": { 
           "doc_count": 3546, 
           "skus.specs.value.text": { 
           "doc_count_error_upper_bound": 3, 
           "sum_other_doc_count": 495, 
           "buckets": [ 
            { 
            "key": "Brillant", 
            "doc_count": 703 
            }, 
            { 
            "key": "Naturel", 
            "doc_count": 616 
            }, 
            { 
            "key": "Lumineux", 
            "doc_count": 528 
            }, 
            { 
            "key": "Mat", 
            "doc_count": 525 
            }, 
            { 
            "key": "Satiné", 
            "doc_count": 212 
            }, 
            { 
            "key": "Tout en un", 
            "doc_count": 148 
            }, 
            { 
            "key": "Irisé", 
            "doc_count": 142 
            }, 
            { 
            "key": "Pailleté", 
            "doc_count": 77 
            }, 
            { 
            "key": "Crayon", 
            "doc_count": 50 
            }, 
            { 
            "key": "Volume", 
            "doc_count": 50 
            } 
           ] 
           } 
          } 
          } 
         ] 
         } 
        } 
        } 
       } 
       } 
      } 

回答

0

通过使用逆转嵌套解决。