elasticsearch,aggregation,cardinality,Sorting,elasticsearch,Aggregation,Cardinality" /> elasticsearch,aggregation,cardinality,Sorting,elasticsearch,Aggregation,Cardinality" />

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" }

希望这有帮助

这有帮助。非常感谢。我希望我能多次投票,省去了很多麻烦,谢谢!