是否可以使用随机顺序进行聚合? 似乎只有asc或desc可能吗?
{
"aggs" : {
"genders" : {
"terms" : {
"field" : "gender",
"order" : {
"_count" : "asc"
}
}
}
}
}
答案 0 :(得分:1)
根据official documentation,根据术语聚合总是按照这种或那种方式排序。如果未指定,则聚合术语按降序排序。
如果需要的话,你总是可以随机顺序在客户端随机播放结果。
答案 1 :(得分:1)
是的,您可以显示随机结果
请参考此处提供的答案:
Random order & pagination Elasticsearch
你可以尝试这样的事情。我想在桶内随机化结果,所以我使用它。
{
"aggs": {
"genders": {
"terms": {
"field": "gender"
},
"aggs": {
"search_second": {
"top_hits": {
"sort": {
"_script": {
"script": "Math.random()",
"type": "number",
"params": {},
"order": "asc"
}
}
}
}
}
}
}
}
答案 2 :(得分:0)
是的,有可能。这样吗:
{
"aggs": {
"genders": {
"terms": {
"field": "gender",
"size": 10,
"order": {
"rnd.max": "asc"
}
},
"aggs": {
"rnd": {
"stats": {
"script": "Math.random()"
}
}
}
}
}
}
我在这里使用stats-aggregation作为我的随机数生成器,因为它具有脚本属性,但是任何其他具有脚本属性的指标聚合也应该这样做。 您可以使用条款聚合的大小属性来控制返回的存储桶数。值越小,聚合运行越快。