如何使用通配符对查询中的桶聚合进行排序?

How to sort buckets aggregation from query with wildcard?

我不知道如何对存储桶进行排序。我正在使用 ES 6.3 和 following suggested docs。我正在尝试对放置“bucket_sort”聚合的结果进行排序,但出现错误。以下查询有效,但 returns 存储桶的顺序相同,无论我在“查询”正文之后放置带有 'asc' 或 'desc' 的“排序”子句:

{
"query": {
    "bool":{
        "filter":{
            "wildcard": {
                    "datas.295.keyword": {
                        "value":"*w*"
                    }
            }
        }
    }
},
"sort":[
    {
    "datas.295.keyword": {
        "order" : "desc"
    }
    }
],
"aggs": {
    "AGGREGATE_UNIQUE_VALUES_FROM_REPEATED": {
        "terms": {
            "field": "datas.295.keyword"
        }
    }
}}

返回记录匹配操作系统 windows XP, Windows Vista etc. 但如何按升序排序?我试试这个:
{

"query": {
    "bool":{
        "filter":{
            "wildcard": {
                    "datas.295.keyword": {
                        "value":"*w*"
                    }
            }
        }
    }
},
"aggs": {
    "AGGREGATE_UNIQUE_VALUES_FROM_REPEATED": {
        "terms": {
            "field": "datas.295.keyword"
        },
        "aggs": {
            "bucket_sort":{
                "sort": [
                    {
                        "datas.295.keyword": {"order": "asc"}
                    }
                ]
            }
        }
    }
}}

此查询引发 'Expected [START_OBJECT] under [sort], but got a [START_ARRAY] in [bucket_sort]' 错误 感谢阅读!

hits 和 aggs 是 API 的独立部分。您需要的是条款' bucket order:

{
  "query": {
    "bool": {
      "filter": {
        "wildcard": {
          "datas.295.keyword": {
            "value": "*w*"
          }
        }
      }
    }
  },
  "sort": [
    {
      "datas.295.keyword": {
        "order": "desc"
      }
    }
  ],
  "aggs": {
    "AGGREGATE_UNIQUE_VALUES_FROM_REPEATED": {
      "terms": {
        "field": "datas.295.keyword",
        "order": {
          "_key": "desc"
        }
      }
    }
  }
}