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

Sorting Elasticsearch中聚合后的排序

Sorting Elasticsearch中聚合后的排序,sorting,elasticsearch,aggregation,Sorting,elasticsearch,Aggregation,我有这样结构的文档: { FIELD1:string, FIELD2: [ {SUBFIELD:number}, {SUBFIELD:number}...] } 我想根据字段2中数字总和的结果进行排序。子字段: GET myindex/_search { "size":0, "aggs": { "a1": { "terms": { "field": "FIELD1", "size":0 }

我有这样结构的文档:

{
    FIELD1:string,
    FIELD2:
        [ {SUBFIELD:number}, {SUBFIELD:number}...]
}
我想根据字段2中数字总和的结果进行排序。子字段:

GET myindex/_search
{
  "size":0,
  "aggs": {
    "a1": {
      "terms": { 
        "field": "FIELD1",
        "size":0
      },
      "aggs":{
        "a2":{
          "sum":{
            "field":"FIELD2.SUBFIELD"
          }
        }
      }
    }
  }
}
如果我这样做,我将获得未排序的桶,但我希望桶按“a2”值排序。 我怎么能做到?
谢谢大家!

你差点就成功了。您只需向
a1
术语聚合中添加一个,如下所示:

GET myindex/_search
{
  "size":0,
  "aggs": {
    "a1": {
      "terms": { 
        "field": "FIELD1",
        "size":0,
        "order": {"a2": "desc"}      <--- add this
      },
      "aggs":{
        "a2":{
          "sum":{
            "field":"FIELD2.SUBFIELD"
          }
        }
      }
    }
  }
}
GET myindex/\u搜索
{
“大小”:0,
“aggs”:{
“a1”:{
“条款”:{
“字段”:“字段1”,
“大小”:0,
“顺序”:{“a2”:“desc”}Val的辉煌

基本上是一样的,但我找到了每个“名字”的最大“尺寸”,并展示了前25个最大的:

{
  "size": 0,
  "aggs": {
    "agg1": {
      "terms": {
        "field": "name.keyword",
        "order": {
          "agg2": "desc"
        },
        "size": 25
      },
      "aggs": {
        "agg2": {
          "max": {
            "field": "size"
          }
        }
      }
    }
  }
}

谢谢…我不知道“订单”在哪里谢谢!救了我一天!在文档上找不到这个,这很明显:)@ErdalG。文档或订购术语聚合是@Val这在
a2
scripted_metric
聚合时不起作用。我在我必须使用
scripted_metric
聚合的情况下使用了它。我得到了这个错误
“原因”:{“类型”:“聚合\执行\异常”,“原因”:“无效术语聚合顺序路径[totalViews].Terms bucket只能在子聚合器路径上排序,子聚合器路径由路径中的零个或多个单个bucket聚合和路径末端的最终单个bucket或度量聚合组成。“}
@saeedzhi如果正确,则有一个和一个。