只获取一个具有特定字段值的项目

时间:2017-05-26 08:24:03

标签: node.js elasticsearch

如何通过特定字段值区分结果。例如,我有group_id字段,我不想使用相同的group_id获得多个结果。

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

例如,这是我的文件清单。从这个列表中我只需要一个男性和一个女性。所以我认为我需要按字段分组" group"并从该组匹配中只获得一个。我认为这很简单,我不需要写那个匹配。在文档中,可能的例子是更复杂的情况。

enter image description here

1 个答案:

答案 0 :(得分:0)

使用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
                    }
                }
            }
        }
    }
}