gpt4 book ai didi

elasticsearch - 如何在聚合中获取特定的 _source 字段

转载 作者:行者123 更新时间:2023-12-02 22:11:47 27 4
gpt4 key购买 nike

我正在探索 ElasticSearch,用于应用程序,它将处理大量数据并生成一些统计结果。我的要求是检索特定字段的某些统计信息。例如,对于给定的字段,我想检索其唯一值和每个值的文档频率,以及值的长度。值长度与每个文档一起被索引。
到目前为止,我已经尝试过 Terms Aggregation ,使用以下查询:

{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"type_count": {
"terms": {
"field": "val.keyword",
"size": 100
}
}
}
}

查询返回字段 val 中的所有值与出现每个值的文档数量。我要领域 val_len也将被退回。是否可以使用 ElasticSearch 实现这一点?换句话说,是否可以包含特定的 _source桶中的字段?我已经浏览了在线提供的文档,但我还没有找到解决方案。
希望有人能指出我正确的方向。提前致谢!

我试图包括 _source以下列方式:
 "aggs": {
"type_count": {
"terms": {
"field": "val.keyword",
"size": 100
},
"_source":["val_len"]
}
}


"aggs": {
"type_count": {
"terms": {
"field": "val.keyword",
"size": 100,
"_source":["val_len"]
}
}
}

但我想这不是正确的方法,因为两者都给了我解析错误。

最佳答案

您需要使用另一个名为 top_hits 的子聚合, 像这样:

"aggs": {
"type_count": {
"terms": {
"field": "val.keyword",
"size": 100
},
"aggs": {
"hits": {
"top_hits": {
"_source":["val_len"],
"size": 1
}
}
}
}
}

另一种方法是使用另一个 avg子聚合,因此您也可以对其进行排序
"aggs": {
"type_count": {
"terms": {
"field": "val.keyword",
"size": 100,
"order": {
"length": "desc"
}
},
"aggs": {
"length": {
"avg": {
"field": "val_len"
}
}
}
}
}

关于elasticsearch - 如何在聚合中获取特定的 _source 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54649412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com