|
|
@@ -112,7 +112,7 @@ func (b *SearchRequestBuilder) Query() *QueryBuilder {
|
|
|
|
|
|
// Agg initiate and returns a new aggregation builder
|
|
|
func (b *SearchRequestBuilder) Agg() AggBuilder {
|
|
|
- aggBuilder := newAggBuilder()
|
|
|
+ aggBuilder := newAggBuilder(b.version)
|
|
|
b.aggBuilders = append(b.aggBuilders, aggBuilder)
|
|
|
return aggBuilder
|
|
|
}
|
|
|
@@ -275,11 +275,13 @@ type AggBuilder interface {
|
|
|
type aggBuilderImpl struct {
|
|
|
AggBuilder
|
|
|
aggDefs []*aggDef
|
|
|
+ version int
|
|
|
}
|
|
|
|
|
|
-func newAggBuilder() *aggBuilderImpl {
|
|
|
+func newAggBuilder(version int) *aggBuilderImpl {
|
|
|
return &aggBuilderImpl{
|
|
|
aggDefs: make([]*aggDef, 0),
|
|
|
+ version: version,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -317,7 +319,7 @@ func (b *aggBuilderImpl) Histogram(key, field string, fn func(a *HistogramAgg, b
|
|
|
})
|
|
|
|
|
|
if fn != nil {
|
|
|
- builder := newAggBuilder()
|
|
|
+ builder := newAggBuilder(b.version)
|
|
|
aggDef.builders = append(aggDef.builders, builder)
|
|
|
fn(innerAgg, builder)
|
|
|
}
|
|
|
@@ -337,7 +339,7 @@ func (b *aggBuilderImpl) DateHistogram(key, field string, fn func(a *DateHistogr
|
|
|
})
|
|
|
|
|
|
if fn != nil {
|
|
|
- builder := newAggBuilder()
|
|
|
+ builder := newAggBuilder(b.version)
|
|
|
aggDef.builders = append(aggDef.builders, builder)
|
|
|
fn(innerAgg, builder)
|
|
|
}
|
|
|
@@ -347,6 +349,8 @@ func (b *aggBuilderImpl) DateHistogram(key, field string, fn func(a *DateHistogr
|
|
|
return b
|
|
|
}
|
|
|
|
|
|
+const termsOrderTerm = "_term"
|
|
|
+
|
|
|
func (b *aggBuilderImpl) Terms(key, field string, fn func(a *TermsAggregation, b AggBuilder)) AggBuilder {
|
|
|
innerAgg := &TermsAggregation{
|
|
|
Field: field,
|
|
|
@@ -358,11 +362,18 @@ func (b *aggBuilderImpl) Terms(key, field string, fn func(a *TermsAggregation, b
|
|
|
})
|
|
|
|
|
|
if fn != nil {
|
|
|
- builder := newAggBuilder()
|
|
|
+ builder := newAggBuilder(b.version)
|
|
|
aggDef.builders = append(aggDef.builders, builder)
|
|
|
fn(innerAgg, builder)
|
|
|
}
|
|
|
|
|
|
+ if b.version >= 60 && len(innerAgg.Order) > 0 {
|
|
|
+ if orderBy, exists := innerAgg.Order[termsOrderTerm]; exists {
|
|
|
+ innerAgg.Order["_key"] = orderBy
|
|
|
+ delete(innerAgg.Order, termsOrderTerm)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
b.aggDefs = append(b.aggDefs, aggDef)
|
|
|
|
|
|
return b
|
|
|
@@ -377,7 +388,7 @@ func (b *aggBuilderImpl) Filters(key string, fn func(a *FiltersAggregation, b Ag
|
|
|
Aggregation: innerAgg,
|
|
|
})
|
|
|
if fn != nil {
|
|
|
- builder := newAggBuilder()
|
|
|
+ builder := newAggBuilder(b.version)
|
|
|
aggDef.builders = append(aggDef.builders, builder)
|
|
|
fn(innerAgg, builder)
|
|
|
}
|
|
|
@@ -398,7 +409,7 @@ func (b *aggBuilderImpl) GeoHashGrid(key, field string, fn func(a *GeoHashGridAg
|
|
|
})
|
|
|
|
|
|
if fn != nil {
|
|
|
- builder := newAggBuilder()
|
|
|
+ builder := newAggBuilder(b.version)
|
|
|
aggDef.builders = append(aggDef.builders, builder)
|
|
|
fn(innerAgg, builder)
|
|
|
}
|