2013-07-21 22 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组合,然后遍历这些结果建立与每个组合的小过滤器方面的搜索。

在第一个查询中使用术语面可能是获取唯一结果集的好方法。