2013-07-21 19 views
3

我有這樣的結構文件:ElasticSearch分組刻面

{ 
    id: 312256, 
    name: "SomeName", 
    filterBlocks: [{ 
      id: 0 
      filterTypeId: 4 
      filterItems: [ 
       1190 
      ] 
     }, { 
      id: 0 
      filterTypeId: 3 
      filterItems: [ 
       353 
      ] 
     }, { 
      id: 234 
      filterTypeId: 1 
      filterItems: [ 
       6342 
      ] 
     } 
    ] 
} 

對於filterBlocks.id + filterBlocks.filterTypeId的每個不同組合我需要filterItems場N大小方面。我嘗試使用的查詢,如:

{ 
    "query": { 
     "match_all": {} 
    }, 
    "facets": { 
     "filterBlocks": { 
      "terms": { 
       "field": "filterBlocks.filterItems" 
      } 
     } 
    } 
} 

但當然,我得到n只有面沒有通過filterBlocks.id + filterBlocks.filterTypeId分組

什麼」我需要在我的查詢或文檔結構修改得到它對?感謝的

+0

所以,你要麼需要方面的動態數(每'filterBlocks.id' /'filterBlocks.filterType'組合中的一個方面)或某種類似'GROUP BY分組的filterTypeId'。據我所知,elasticsearch既不可能。 –

回答

0

您需要先查詢來獲取所有filterBlocks.id/filterBlocks.filterType組合,然後遍歷這些結果建立與每個組合的小過濾器方面的搜索。

在第一個查詢中使用術語面可能是獲取唯一結果集的好方法。