Features: SearchAfter、Term Aggregation Order、Aggregation Include Filter Values (#14)
* Add support for multi_match queries * Add support for highlights * Add support for nested aggregations and filtered aggregations * Update README * Fix formatting * fix * feat: add support for search after * fix:set search after []string to []interface * fix:add .gitignore * feat:Support for term aggs order * Feat: Support include filter for termAggs * Update aggregations_test.go Fix conflict. * Update go.mod Co-authored-by: Caleb Champlin <caleb.champlin@gmail.com> Co-authored-by: Hardy <caoxiaozhen@secnium.com> Co-authored-by: Oran Moshai <12291998+oranmoshai@users.noreply.github.com>
This commit is contained in:
co-authored by
Caleb Champlin
Hardy
Oran Moshai
parent
fc16427405
commit
49a92fc25e
@@ -12,6 +12,8 @@ type TermsAggregation struct {
|
||||
shardSize *float64
|
||||
showTermDoc *bool
|
||||
aggs []Aggregation
|
||||
order map[string]string
|
||||
include []string
|
||||
}
|
||||
|
||||
// TermsAgg creates a new aggregation of type "terms". The method name includes
|
||||
@@ -54,6 +56,18 @@ func (agg *TermsAggregation) Aggs(aggs ...Aggregation) *TermsAggregation {
|
||||
return agg
|
||||
}
|
||||
|
||||
// Order sets the sort for terms agg
|
||||
func (agg *TermsAggregation) Order(order map[string]string) *TermsAggregation {
|
||||
agg.order = order
|
||||
return agg
|
||||
}
|
||||
|
||||
// Include filter the values for buckets
|
||||
func (agg *TermsAggregation) Include(include ...string) *TermsAggregation {
|
||||
agg.include = include
|
||||
return agg
|
||||
}
|
||||
|
||||
// Map returns a map representation of the aggregation, thus implementing the
|
||||
// Mappable interface.
|
||||
func (agg *TermsAggregation) Map() map[string]interface{} {
|
||||
@@ -70,6 +84,18 @@ func (agg *TermsAggregation) Map() map[string]interface{} {
|
||||
if agg.showTermDoc != nil {
|
||||
innerMap["show_term_doc_count_error"] = *agg.showTermDoc
|
||||
}
|
||||
if agg.order != nil {
|
||||
innerMap["order"] = agg.order
|
||||
}
|
||||
|
||||
if agg.include != nil {
|
||||
if len(agg.include) <= 1 {
|
||||
innerMap["include"] = agg.include[0]
|
||||
} else {
|
||||
innerMap["include"] = agg.include
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
outerMap := map[string]interface{}{
|
||||
"terms": innerMap,
|
||||
|
||||
Reference in New Issue
Block a user