2016-08-02 73 views
1

例如,我需要在彈性搜索中使用過濾器進行聚合。 我有保存在彈性搜索的文檔在彈性搜索中使用過濾器在嵌套字段上進行聚合的查詢

{ 
"id":1, 
"name":"1", 
"url":"1png20160612115249190.png", 
"description": "this is a good asset", 
"alt_sizes": ["hi","yes"], 
"tags":[{ "id":"1", "name":"Movies"}, 
    { "id":"2", "name":"Sports"}], 
"packs":[{ "id":"1", "name":"pack1", "partnerId":"1"}, 
    { "id":"2", "name":"pack2 test", "partnerId":"2"}], 
"category":[{ "id":"1", "name":"cat1"}, 
    { "id":"2", "name":"cat2"}], 
"appPartner":[{ "id":"1", "name":"par1"}, 
     { "id":"2", "name":"par2"}], 
"created_time":"2016-07-26 00:00:00", 
"updated_time":"2016-07-26 10:45:43" 
} 

在這裏,包被收錄在ES嵌套類資產。 包中將包含一個id,name和partnerId數組。 現在我想要的是與特定PARTNERID包聚合像我想PARTNERID所有的包= 10

我已經試過此查詢

{ 
    "size":0, 
    "query": { 
    "nested": { 
        "path":"appPartner", 
        "query": { 
        "bool": { 
         "must": [ 
         {"match": {"appPartner.id": "1"}} 
         ] 
        } 
        } 
       } 
    }, 
    "aggs": { 
     "packs" : { 
      "nested" : { 
       "path" : "packs" 
      }, 
      "aggs" : { 
       "id" : { 
        "terms" : { 
         "field" : "packs.id" 
        } 
       , 
       "aggs":{ 
        "name":{ 
        "terms" : { 
          "field" : "packs.name" 
         } 
        } 
      } 
      } 
      }  

     } 
    } 
} 

該查詢讓我總在所有嵌套組IDS。我需要聚合了所有嵌套packids,與PARTNERID =

回答

1
"aggs": { 
    "packs": { 
     "nested": { 
     "path": "packs" 
     }, 
     "aggs": { 
     "partner": { 
      "filter": { 
      "term": { 
       "packs.partnerId": "10" 
      } 
      }, 
      "aggs": { 
      "id": { 
       "terms": { 
       "field": "packs.id" 
       }, 
       "aggs": { 
       "name": { 
        "terms": { 
        "field": "packs.name" 
        } 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
+0

由於將執行這一點,看看它是否工作 – Nipun

+0

是它的工作,謝謝 – Nipun

相關問題