我确定这是一个语法问题,我还没有用 Go 解决 -我得到的错误——不能在extractBucket的参数中使用*term(类型elastic.AggregationBucketKeyItem)作为类型elastic.Aggregations产生错误的那一行是"Value": extractBucket(parts[1:], *term),相关代码,用于上下文// from https://github.com/olivere/elastic/blob/v3.0.22/search_aggs.gotype Aggregations map[string]*json.RawMessagetype AggregationBucketSignificantTerms struct { Aggregations DocCount int64 //`json:"doc_count"` Buckets []*AggregationBucketSignificantTerm //`json:"buckets"` Meta map[string]interface{} // `json:"meta,omitempty"`}// my codefunc extractBucket(parts []string, aggs elastic.Aggregations) interface{} { // bunch of code removed terms, found := aggs.Terms(part) for _, term := range terms.Buckets { if len(parts) == 0 { retval[(term.Key).(string)] = map[string]interface{}{ "Count": term.DocCount, } } else { retval[(term.Key).(string)] = map[string]interface{}{ "Count": term.DocCount, "Value": extractBucket(parts[1:], *term), } } }}
2 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
嵌入类型会使您“继承”该类型,这是一个常见的误解。即使AggregationBucketSignificantTerms
嵌入了Aggregations
,它也不是编译器的一个。它只有一个 type 字段Aggregations
,并在其顶层提供该类型的方法。感觉有点像继承,但可能不是您对 Java 子类之类的东西所习惯的。
要解决它,您可以尝试"Value": extractBucket(parts[1:], *term.Aggregations),
,但我不清楚这是否会解决您的问题。
慕侠2389804
TA贡献1719条经验 获得超6个赞
好吧,错误是不言自明的:
不能使用 (*term, variable name) (type elastic.AggregationBucketKeyItem <-- Variables current type) as (type elastic.Aggregations <-- Expected type) in argument to extractBucket
不管你的*term
价值
产生者: for _, term := range terms.Buckets {
不是函数的正确类型
extractBucket(parts []string, aggs elastic.Aggregations)
采取一种 elastic.Aggregations
- 2 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消