【问题标题】:How to sort buckets aggregation from query with wildcard?如何使用通配符从查询中对存储桶聚合进行排序?
【发布时间】:2023-03-09 20:46:01
【问题描述】:

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

{
"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等匹配。但是如何按升序排序呢?我试试这个:
{

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

此查询在 [sort] 下引发“预期 [START_OBJECT],但在 [bucket_sort] 中出现 [START_ARRAY]”错误 感谢阅读!

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation


    【解决方案1】:

    命中和聚合是 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"
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-15
      • 2016-09-08
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 2023-01-10
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多