Elasticsearch 基数排序错误
Elasticsearch cardinality sorted wrong
当我提出这样的要求时
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,它会正确排序,但我不能那样做,因为它会计算重复项。
如果更多细节对您有帮助,请随时询问。
如果您尝试按 2 级深度子聚合进行排序,order
语法根据 the documentation 略有不同(请查看本段末尾)。
在 ElasticSearch 权威指南的 this part 中也有更清楚的解释。
在你的情况下,像这样的事情应该可以解决问题:
"order":{ "cities>city_count.value":"desc" }
希望对您有所帮助!
当我提出这样的要求时
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,它会正确排序,但我不能那样做,因为它会计算重复项。
如果更多细节对您有帮助,请随时询问。
如果您尝试按 2 级深度子聚合进行排序,order
语法根据 the documentation 略有不同(请查看本段末尾)。
在 ElasticSearch 权威指南的 this part 中也有更清楚的解释。
在你的情况下,像这样的事情应该可以解决问题:
"order":{ "cities>city_count.value":"desc" }
希望对您有所帮助!