2017-05-26 65 views
0

如何根据特定字段值区分结果。例如,我有group_id字段,我不想用相同的group_id获取多个结果。只得到一个具有特定字段值的项目

[{"name": "Eva", "group_id": "female"}, 
{"name": "Marina", "group_id": "female"}, 
{"name": "Raf", "group_id": "male"}, 
{"name": "Manvel", "group_id": "male"}] 

例如,这是我的文档列表。从这个列表中我只需要得到一个男性和一个女性。所以我认为我需要按照“组”来分组,并且只能得到一组来自该组的比赛。我认为这很简单,我不需要写这个比赛。在文档中,可能的例子是更复杂的情况。

enter image description here

+0

好的。你的查询不起作用? –

+0

{ 'AGGS':{ 'group_by_state':{ '术语':{ '字段': '组' }, '尺寸':1 } } } –

+0

不要使用'大小:1'。删除它,并添加大小为“top_hits”:1.我更新了示例查询,让我变得更简单。 –

回答

1

使用top_hits聚集为您terms汇聚子聚集。您可以在文档中找到一个示例:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/search-aggregations-metrics-top-hits-aggregation.html#_example

POST /sales/_search?size=0 
{ 
    "aggs": { 
     "top_tags": { 
      "terms": { 
       "field": "group_id" 
      }, 
      "aggs": { 
       "top_one": { 
        "top_hits": { 
         "size" : 1 
        } 
       } 
      } 
     } 
    } 
} 
+0

我知道这个文档,但对我来说还不够清楚,而且我尝试了你刚刚在这里写的东西,它不起作用。但谢谢你的回应。 –

+0

你原来的帖子对我来说还不够清楚。因此,请更新您的帖子,并特别提及您尝试的内容以及无法正常工作的内容;-)。 –

+0

这也不起作用。我是否需要更改'top_tags'字段或'top_one'? 我的实际字段名称是'group_id',所以我认为这是正确的。但我无法理解'aggs'字段下的其他内容。 –

相关问题