ElasticSearch - 如何在聚合查询中显示其他字段名称

Ama*_*r S 21 elasticsearch elasticsearch-aggregation

如何在输出存储桶中添加名为"agency_name"的新密钥.

我正在运行聚合代码,如下所示

{
  "aggs": {
    "name": {
      "terms": {
        "field": "agency_code"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我将得出结论

"aggregations": {
    "name": {
        "doc_count_error_upper_bound": 130,
        "sum_other_doc_count": 39921,
        "buckets": [
            {
                "key": "1000",
                "doc_count": 105163
            },
            {
                "key": "2100",
                "doc_count": 43006
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

在显示时我需要显示代理商名称,代码和doc_count

如何修改聚合查询以便我可以获得以下格式.我是ElasticSearch的新手,不知道如何解决这个问题

"aggregations": {
    "name": {
        "doc_count_error_upper_bound": 130,
        "sum_other_doc_count": 39921,
        "buckets": [
            {
                "key": "1000",
                "doc_count": 105163,
                "agency_name": 'Agent 1'
            },
            {
                "key": "2100",
                "doc_count": 43006,
                "agency_name": 'Agent 2'
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

ElasticSearch中的示例数据(分析字段)

{

    "_index": "feeds",
    "_type": "news",
    "_id": "22005",
    "_version": 1,
    "_score": 1,
    "_source": {
        "id": 22005,
        "name": "Test News",
        "agency_name": "Agent 1",
        "agency_code": "1000",
    }

}
Run Code Online (Sandbox Code Playgroud)

小智 10

您可以使用顶部匹配聚合,如下面的链接.格式会略有不同,因为创建额外的聚合会将代理商名称嵌入另一个"点击"键下.

向ElasticSearch术语聚合添加其他字段

{
  "aggs": {
    "name": {
      "terms": {
        "field": "agency_code"
      },
      "aggs": {
        "agency_names" : {
           "top_hits": {
                size: 1, 
                _source: {
                    include: ['agency_name']
                }
            }
         } 
       }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Adi*_*tel 2

我认为你需要添加另一个“aggs”。但它不会采用您想要的格式,而是作为输出中的另一个字段,原因是当前您正在基于“agency_code”进行聚合,并且 doc_count 显示特定机构代码出现的次数。现在,当您想根据“agency_name”聚合它时,该字段可能位于与“agency_code”不同的文档中,并且也具有不同的数字,如果它们始终成对存在,那么此父子索引可能会有所帮助。

https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-parent-child.html