
php小编小新今天为大家带来了一篇关于使用Golang编写简单的ES avg聚合的文章。ES(Elasticsearch)是一个开源的分布式搜索和分析引擎,它提供了丰富的聚合功能,其中包括avg(平均值)聚合。本文将介绍如何使用Golang编写一个简单的ES avg聚合程序,帮助大家更好地理解和应用ES的聚合功能。让我们一起来了解一下吧!
问题内容
我一直在尝试在 go 中编写一个简单的 es avg 聚合,但即使这听起来我不知道如何解析结果:
ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout)
defer cancel()
query := elastic.NewAvgAggregation().Field("Assignment.HomeworkSize")
ss := elastic.NewSearchSource().Query(query)
searchResult, err := c.ES.Search().Index(StudentIndex).SearchSource(ss).Do(ctx)
if err != nil {
return 0, err
}
// Parse Results
aggs := searchResult.Aggregations
但我不确定如何解析 searchresult 来获取此聚合的结果。基本上我想解析代表学生的大量文档并获取作业的平均大小。
解决方法
我通常使用 http 来访问弹性。因此,我将结果作为地图返回,并且可以使用调试器检查您的结果是什么并从那里开始工作。
立即学习“go语言免费学习笔记(深入)”;
本程序源码为asp与acc编写,并没有花哨的界面与繁琐的功能,维护简单方便,只要你有一些点点asp的基础,二次开发易如反掌。 1.功能包括产品,新闻,留言簿,招聘,下载,...是大部分中小型的企业建站的首选。本程序是免费开源,只为大家学习之用。如果用于商业,版权问题概不负责。1.采用asp+access更加适合中小企业的网站模式。 2.网站页面div+css兼容目前所有主流浏览器,ie6+,Ch
var resp map[string]interface{}
err := c.handlerequest(http.methodget, tag, req, &resp)
其中 tag 是您的索引,req - 您对弹性执行的请求,response 是响应
内部处理程序看起来像这样:
req, err := http.newrequest(method, c.endpoint+tag, bytes.newreader(jsonbody))
其中 jsonbody 是您传递给处理程序的请求 其他一切都是用 go 发送 http 的常用方式
还要记住的一件事是在结果映射中处理类型(类型断言),如下所示:
for index, hit := range resp["hits"].(map[string]interface{})["hits"].([]interface{}) {
Source := hit.(map[string]interface{})["_source"].(map[string]interface{})
items[index] = someType{
SomeField: Source["app_name"].(string),
}
}









