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

Sorting 聚合弹性搜索中桶的字符串排序

Sorting 聚合弹性搜索中桶的字符串排序,sorting,elasticsearch,aggregation,Sorting,elasticsearch,Aggregation,我想按具有字符串值的字段对结果进行排序,例如,我的响应如下 "aggregations": { "group_agg": { "doc_count_error_upper_bound": -1, "sum_other_doc_count": 82, "buckets": [ { "key": "38:16:33:6A:71:FF", "doc_count

我想按具有字符串值的字段对结果进行排序,例如,我的响应如下

"aggregations": {
    "group_agg": {
        "doc_count_error_upper_bound": -1,
        "sum_other_doc_count": 82,
        "buckets": [
            {
                "key": "38:16:33:6A:71:FF",
                "doc_count": 1,
                "group_agg_top_hit": {
                    "hits": {
                        "total": 1,
                        "max_score": null,
                        "hits": [
                            {
                                "_index": "23432534534",
                                "_type": "log",
                                "_id": "123143435346",
                                "_score": null,
                                "_source": {
                                    "name1": "aaa-bbb",
                                    "name2": "asdasd-bbb",
                                    "Mac": "38:22:33:6A:71:FF",
                                    "description": "",
                                    "event_timestamp": "2017-12-16T08:06:10.000+0000",
                                    "ssid": "aaa-network"
                                },
                                "sort": [
                                    1513411570000
                                ]
                            }
                        ]
                    }
                },
                "order_agg": {
                    "value": 1513411570000,
                    "value_as_string": "2017-12-16T08:06:10.000Z"
                }
            }
        ]
    }
}
我用时间戳来描述,这是一个中性的价值,我需要用

======================================

 "aggs": {
"group_agg": {
  "terms": {
    "field": "Mac.rawData",
    "size": 1,
     "order" : { "order_agg" : "asc" }   ----> need to change this to make sorting by name 1 or name 2

  },
  "aggs": {
    "order_agg": {
      "max": {
        "field": "event_timestamp"
      }
    },
    "group_agg_top_hit": {
      "top_hits": {
      "sort": [
                {
                    "event_timestamp": {
                        "order": "desc"
                    }
                }
            ],
            "_source": {
                "includes": ["name1", "name2", "Mac", "ssid", "event_timestamp","description"]
            },
        "size": 1
      }
    }
  }
}
}

==== 这段代码正在工作,但我需要将bucket排序改为按名称,而不是按事件\时间戳


请帮助我

我也曾试图做到这一点;但是,由于所有单值度量聚合(如
max
avg
等)都要求要聚合的字段为
整数类型,因此无效


你可能遇到过这种情况,并且像我一样寻求外部帮助;希望其他人看到你的这篇文章,并指出一个聚合解决方案或至少是替代方案或最佳实践,可以通过
文本
字段来完成桶排序。

如果你使用的是ES version>6.x,那么你可以使用复合聚合。它接受文本搜索,但工作原理与术语聚合略有不同: