elasticsearch 如何在Elasticsearch术语聚合中按多个值排序
如何按多个值排序ES术语聚合 目前我确实:
elasticsearch 如何在Elasticsearch术语聚合中按多个值排序,
elasticsearch,
elasticsearch,如何按多个值排序ES术语聚合 目前我确实: aggs : { aggName : { terms : { field : "foo", order : { "subAgg.avg" : "desc" } } }, aggs : { subAgg : { stats : { field : "bar"
aggs : {
aggName : {
terms : {
field : "foo",
order : { "subAgg.avg" : "desc" }
}
},
aggs : {
subAgg : {
stats : {
field : "bar"
}
}
}
}
API说您可以执行以下操作:
order : [ { "subAgg.avg" : "desc" }, { "subAgg.count" : "desc" } ]
但这不起作用,ES会抛出一个错误:
Unknown key for a START_ARRAY in [aggName]: [order].
我在其他帖子中发现了类似的内容:
order : { "subAgg.avg" : "desc", "subAgg.count" : "desc" }
没有错误,但排序不正确
我的问题是,如何按多个值正确排序?
我已经安装了ES 1.4.4
thx
编辑:
映射
查询:
{
query : {
match_all : {}
},
aggs : {
aggName : {
terms : {
field : "foo",
order : [ { "subAgg.avg" : "desc" }, { "subAgg.count" : "desc" } ]
},
aggs : {
subAgg : {
stats : {
field : "foo"
}
}
}
}
}
}
您可以尝试以下方法:
"order" : [ { "rock>playback_stats.avg" : "desc" }, { "_count" : "desc" } ]
发件人:
通过本文档,您的语法似乎是正确的。为我们提供文档化映射和完整查询的映射,在没有order子句的情况下,查询运行时不会出错,但一旦order是array类型,它就会给出:SearchParseException[[mymapping][1]:query[ConstantCore:],from[-1],size[-1]:使用ES 1.5.0解析失败[aggName]:[order].]中的START_数组的未知键,我做的正是你上面展示的,除了我是通过两个不同的子聚合进行排序。除此之外,基本上是一样的,对我来说很好。
"order" : [ { "rock>playback_stats.avg" : "desc" }, { "_count" : "desc" } ]
{
"aggs" : {
"countries" : {
"terms" : {
"field" : "artist.country",
"order" : [ { "rock>playback_stats.avg" : "desc" }, { "_count" : "desc" } ]
},
"aggs" : {
"rock" : {
"filter" : { "term" : { "genre" : "rock" }},
"aggs" : {
"playback_stats" : { "stats" : { "field" : "play_count" }}
}
}
}
}
}