Sorting 弹性搜索基数排序错误
当我提出这样的要求时Sorting 弹性搜索基数排序错误,sorting,elasticsearch,aggregation,cardinality,Sorting,elasticsearch,Aggregation,Cardinality,当我提出这样的要求时 curl -XGET "http://localhost:9200/log/travels/_search?pretty" -d ' { "aggs":{ "travelers":{ "terms":{ "field":"traveler",
curl -XGET "http://localhost:9200/log/travels/_search?pretty" -d '
{
"aggs":{
"travelers":{
"terms":{
"field":"traveler",
"shard_size":0,
"size":5,
"order":{
"cities":"desc"
}
},
"aggs":{
"cities":{
"nested":{
"path":"cities"
},
"aggs":{
"city_count":{
"cardinality":{
"field":"cities.name"
}
}
}
}
}
}
}
}'
"aggregations" : {
"travelers" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 410,
"buckets" : [ {
"key" : "patrick",
"doc_count" : 9,
"cities" : {
"doc_count" : 10,
"city_count" : {
"value" : 3
}
}
}, {
"key" : "jonathan",
"doc_count" : 8,
"cities" : {
"doc_count" : 10,
"city_count" : {
"value" : 4
}
}
}, {
"key" : "yosef",
"doc_count" : 8,
"cities" : {
"doc_count" : 10,
"city_count" : {
"value" : 4
}
}
}, {
"key" : "mark",
"doc_count" : 8,
"cities" : {
"doc_count" : 9,
"city_count" : {
"value" : 2
}
}
}, {
"key" : "mike",
"doc_count" : 7,
"cities" : {
"doc_count" : 9,
"city_count" : {
"value" : 5
}
}
} ]
}
}
我得到了一个顺序错误的回复,就像这样
curl -XGET "http://localhost:9200/log/travels/_search?pretty" -d '
{
"aggs":{
"travelers":{
"terms":{
"field":"traveler",
"shard_size":0,
"size":5,
"order":{
"cities":"desc"
}
},
"aggs":{
"cities":{
"nested":{
"path":"cities"
},
"aggs":{
"city_count":{
"cardinality":{
"field":"cities.name"
}
}
}
}
}
}
}
}'
"aggregations" : {
"travelers" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 410,
"buckets" : [ {
"key" : "patrick",
"doc_count" : 9,
"cities" : {
"doc_count" : 10,
"city_count" : {
"value" : 3
}
}
}, {
"key" : "jonathan",
"doc_count" : 8,
"cities" : {
"doc_count" : 10,
"city_count" : {
"value" : 4
}
}
}, {
"key" : "yosef",
"doc_count" : 8,
"cities" : {
"doc_count" : 10,
"city_count" : {
"value" : 4
}
}
}, {
"key" : "mark",
"doc_count" : 8,
"cities" : {
"doc_count" : 9,
"city_count" : {
"value" : 2
}
}
}, {
"key" : "mike",
"doc_count" : 7,
"cities" : {
"doc_count" : 9,
"city_count" : {
"value" : 5
}
}
} ]
}
}
我想按旅行城市的数量来订购。如果我将基数改为value_count,它的顺序是正确的,但我不能这样做,因为它会计算重复项
如果有更多的细节对您有帮助,请随时询问。如果您试图按两级深度子聚合进行排序,则
顺序
语法会根据不同的情况略有不同(请参见本段末尾)
《ElasticSearch权威指南》中也对其进行了更清晰的解释
在您的情况下,类似这样的操作应该可以做到:
"order":{ "cities>city_count.value":"desc" }
希望这有帮助 这有帮助。非常感谢。我希望我能多次投票,省去了很多麻烦,谢谢!