ElasticSearch - 我如何订购聚合(不是聚合中的结果)
ElasticSearch - How do I order aggregations (not results within aggregations)
我执行了一个查询,其中 returns 有一些命中,以及我用来过滤结果的一堆不同的聚合。
我正在使用 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": [
]
},
...
简而言之,您不能订购它们。通常 JSON 中的 key/value 对被认为是无序的,所以我怀疑 Elasticsearch 是否会为此添加一个功能。
如果这是一个 public 站点,出于安全考虑,我还强烈建议您在页面和 Elasticsearch 集群之间放置一些东西。无论 "something" 是什么,都可以转换结果并在列表中对聚合进行排序,从而在 javascript 层相应地绑定。
我执行了一个查询,其中 returns 有一些命中,以及我用来过滤结果的一堆不同的聚合。
我正在使用 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": [
]
},
...
简而言之,您不能订购它们。通常 JSON 中的 key/value 对被认为是无序的,所以我怀疑 Elasticsearch 是否会为此添加一个功能。
如果这是一个 public 站点,出于安全考虑,我还强烈建议您在页面和 Elasticsearch 集群之间放置一些东西。无论 "something" 是什么,都可以转换结果并在列表中对聚合进行排序,从而在 javascript 层相应地绑定。