我有一个大约有350万条记录的Elasticsearch实例,我希望在任何给定的搜索中都能快速返回(n)每个属性值的记录。
Document 1:
{
"id": 1,
"gender": "male",
"name": "Joe"
}
Document 2:
{
"id": 2,
"gender": "male",
"name": "John"
}
Document 3:
{
"id": 3,
"gender": "female",
"name": "Jill"
}
Document 4:
{
"id": 4,
"gender": "female",
"name": "Joan"
}
我只想为gender
属性的每个值返回1个文档:
例如,只返回doc 1和doc 3
这显然会分布在更大的结果集中,但结果仍应扩展到每个唯一属性值的(n)docs。
非常感谢任何帮助。
电子
答案 0 :(得分:2)
使用"性别"的汇总字段和" top_hits"聚合返回n
每个点击次数"性别"值:
{
"size": 0,
"query": {
"filtered": {
"filter": {
"bool": {
"should": [{}]
}
}
}
},
"aggs": {
"by_gender": {
"terms": {
"field": "gender"
},
"aggs": {
"first_hit": {
"top_hits": {"size":1}
}
}
}
}
}