我执行一个返回一些命中的查询,以及一堆用于过滤结果的不同聚合。
我使用Knockout将结果数据绑定到我的页面,并且我希望能够指定过滤器在页面上显示的顺序。
我可以使用返回的聚合中的任何内容对其进行排序 最简单的方法是控制聚合部分在结果中出现的顺序。我该怎么做?
以下示例....我提交了一个包含多个聚合的查询。我标记了前四个。 我得到的聚合结果并不是我想要的。如何指定返回聚合的顺序(不是其中的条款......)?
查询:
{
"from": 0,
"size": 16,
"aggs": {
"Keyword": { **<------ One**
"terms": {
"field": "topics",
"size": 15
}
},
"Audience": { **<------- Two**
"terms": {
"field": "audience"
}
},
"Category": { **<-------- Three**
"terms": {
"field": "topLevelCategory",
"size": 15
}
},
"Author": { **<--------- Four**
"terms": {
"field": "authors",
"size": 10
}
},
...
结果:
...
"aggregations": {
"Resource": { **<--------- Six**
"buckets": [
]
},
"Category": { **<--------- Three**
"buckets": [
]
},
"Published": { **<---------- Five**
"buckets": [
]
},
"Keyword": { **<------------ One**
"buckets": [
]
},
...
答案 0 :(得分:0)
简而言之,您无法订购它们。一般来说,JSON中的键/值对被认为是无序的,所以我怀疑Elasticsearch会添加一个功能来执行此操作。
如果这是一个公共网站,我还强烈建议您在页面和Elasticsearch集群之间放置一些东西用于安全目的。无论如何&#34;东西&#34;是,可以转换结果并在javascript层相应绑定的列表中对聚合进行排序。