1

ordersのようなドキュメントがあります。

{
   "customer":{
      "id":1,
      "Name":"Foobar"
   },
   "products":[
      {
         "id":1,
         "name":"Television",
         "category": 11
      },
      {
         "id":2,
         "name":"Smartphone",
         "category": 12
      }
   ]
}

そしてtop_terms_aggregation、商品の売れ筋を知る為に行っております。グローバルに行うには、次を使用します。

{
   "size":0,
   "aggs":{
      "products":{
         "nested":{
            "path":"products"
         },
         "aggs":{
            "top_terms_aggregation":{
               "terms":{
                  "field":"products.id",
                  "size":10
               }
            }
         }
      }
   }
}

しかし、与えられた製品をどのようにフィルタリングしますcategory_idか? このフィルターを追加してみました:

  "query":{
      "bool":{
         "must":[
            {
               "match":{
                  "products.category":11
               }
            }
         ]
      }
   }

ただし、これにより、特定のカテゴリの製品を含む注文自体がフィルター処理され、集計が破損します。

特定のカテゴリに属する​​ベストセラー商品を取得したいと考えています。

4

2 に答える 2