diff options
Diffstat (limited to 'vendor/github.com/olivere/elastic/search_aggs_bucket_composite.go')
-rw-r--r-- | vendor/github.com/olivere/elastic/search_aggs_bucket_composite.go | 498 |
1 files changed, 0 insertions, 498 deletions
diff --git a/vendor/github.com/olivere/elastic/search_aggs_bucket_composite.go b/vendor/github.com/olivere/elastic/search_aggs_bucket_composite.go deleted file mode 100644 index 1d9132d2d..000000000 --- a/vendor/github.com/olivere/elastic/search_aggs_bucket_composite.go +++ /dev/null @@ -1,498 +0,0 @@ -// Copyright 2012-present Oliver Eilhard. All rights reserved. -// Use of this source code is governed by a MIT-license. -// See http://olivere.mit-license.org/license.txt for details. - -package elastic - -// CompositeAggregation is a multi-bucket values source based aggregation -// that can be used to calculate unique composite values from source documents. -// -// See https://www.elastic.co/guide/en/elasticsearch/reference/6.1/search-aggregations-bucket-composite-aggregation.html -// for details. -type CompositeAggregation struct { - after map[string]interface{} - size *int - sources []CompositeAggregationValuesSource - subAggregations map[string]Aggregation - meta map[string]interface{} -} - -// NewCompositeAggregation creates a new CompositeAggregation. -func NewCompositeAggregation() *CompositeAggregation { - return &CompositeAggregation{ - sources: make([]CompositeAggregationValuesSource, 0), - subAggregations: make(map[string]Aggregation), - } -} - -// Size represents the number of composite buckets to return. -// Defaults to 10 as of Elasticsearch 6.1. -func (a *CompositeAggregation) Size(size int) *CompositeAggregation { - a.size = &size - return a -} - -// AggregateAfter sets the values that indicate which composite bucket this -// request should "aggregate after". -func (a *CompositeAggregation) AggregateAfter(after map[string]interface{}) *CompositeAggregation { - a.after = after - return a -} - -// Sources specifies the list of CompositeAggregationValuesSource instances to -// use in the aggregation. -func (a *CompositeAggregation) Sources(sources ...CompositeAggregationValuesSource) *CompositeAggregation { - a.sources = append(a.sources, sources...) - return a -} - -// SubAggregations of this aggregation. -func (a *CompositeAggregation) SubAggregation(name string, subAggregation Aggregation) *CompositeAggregation { - a.subAggregations[name] = subAggregation - return a -} - -// Meta sets the meta data to be included in the aggregation response. -func (a *CompositeAggregation) Meta(metaData map[string]interface{}) *CompositeAggregation { - a.meta = metaData - return a -} - -// Source returns the serializable JSON for this aggregation. -func (a *CompositeAggregation) Source() (interface{}, error) { - // Example: - // { - // "aggs" : { - // "my_composite_agg" : { - // "composite" : { - // "sources": [ - // {"my_term": { "terms": { "field": "product" }}}, - // {"my_histo": { "histogram": { "field": "price", "interval": 5 }}}, - // {"my_date": { "date_histogram": { "field": "timestamp", "interval": "1d" }}}, - // ], - // "size" : 10, - // "after" : ["a", 2, "c"] - // } - // } - // } - // } - // - // This method returns only the { "histogram" : { ... } } part. - - source := make(map[string]interface{}) - opts := make(map[string]interface{}) - source["composite"] = opts - - sources := make([]interface{}, len(a.sources)) - for i, s := range a.sources { - src, err := s.Source() - if err != nil { - return nil, err - } - sources[i] = src - } - opts["sources"] = sources - - if a.size != nil { - opts["size"] = *a.size - } - - if a.after != nil { - opts["after"] = a.after - } - - // AggregationBuilder (SubAggregations) - if len(a.subAggregations) > 0 { - aggsMap := make(map[string]interface{}) - source["aggregations"] = aggsMap - for name, aggregate := range a.subAggregations { - src, err := aggregate.Source() - if err != nil { - return nil, err - } - aggsMap[name] = src - } - } - - // Add Meta data if available - if len(a.meta) > 0 { - source["meta"] = a.meta - } - - return source, nil -} - -// -- Generic interface for CompositeAggregationValues -- - -// CompositeAggregationValuesSource specifies the interface that -// all implementations for CompositeAggregation's Sources method -// need to implement. -// -// The different implementations are described in -// https://www.elastic.co/guide/en/elasticsearch/reference/6.1/search-aggregations-bucket-composite-aggregation.html#_values_source_2. -type CompositeAggregationValuesSource interface { - Source() (interface{}, error) -} - -// -- CompositeAggregationTermsValuesSource -- - -// CompositeAggregationTermsValuesSource is a source for the CompositeAggregation that handles terms -// it works very similar to a terms aggregation with slightly different syntax -// -// See https://www.elastic.co/guide/en/elasticsearch/reference/6.1/search-aggregations-bucket-composite-aggregation.html#_terms -// for details. -type CompositeAggregationTermsValuesSource struct { - name string - field string - script *Script - valueType string - missing interface{} - order string -} - -// NewCompositeAggregationTermsValuesSource creates and initializes -// a new CompositeAggregationTermsValuesSource. -func NewCompositeAggregationTermsValuesSource(name string) *CompositeAggregationTermsValuesSource { - return &CompositeAggregationTermsValuesSource{ - name: name, - } -} - -// Field to use for this source. -func (a *CompositeAggregationTermsValuesSource) Field(field string) *CompositeAggregationTermsValuesSource { - a.field = field - return a -} - -// Script to use for this source. -func (a *CompositeAggregationTermsValuesSource) Script(script *Script) *CompositeAggregationTermsValuesSource { - a.script = script - return a -} - -// ValueType specifies the type of values produced by this source, -// e.g. "string" or "date". -func (a *CompositeAggregationTermsValuesSource) ValueType(valueType string) *CompositeAggregationTermsValuesSource { - a.valueType = valueType - return a -} - -// Order specifies the order in the values produced by this source. -// It can be either "asc" or "desc". -func (a *CompositeAggregationTermsValuesSource) Order(order string) *CompositeAggregationTermsValuesSource { - a.order = order - return a -} - -// Asc ensures the order of the values produced is ascending. -func (a *CompositeAggregationTermsValuesSource) Asc() *CompositeAggregationTermsValuesSource { - a.order = "asc" - return a -} - -// Desc ensures the order of the values produced is descending. -func (a *CompositeAggregationTermsValuesSource) Desc() *CompositeAggregationTermsValuesSource { - a.order = "desc" - return a -} - -// Missing specifies the value to use when the source finds a missing -// value in a document. -func (a *CompositeAggregationTermsValuesSource) Missing(missing interface{}) *CompositeAggregationTermsValuesSource { - a.missing = missing - return a -} - -// Source returns the serializable JSON for this values source. -func (a *CompositeAggregationTermsValuesSource) Source() (interface{}, error) { - source := make(map[string]interface{}) - name := make(map[string]interface{}) - source[a.name] = name - values := make(map[string]interface{}) - name["terms"] = values - - // field - if a.field != "" { - values["field"] = a.field - } - - // script - if a.script != nil { - src, err := a.script.Source() - if err != nil { - return nil, err - } - values["script"] = src - } - - // missing - if a.missing != nil { - values["missing"] = a.missing - } - - // value_type - if a.valueType != "" { - values["value_type"] = a.valueType - } - - // order - if a.order != "" { - values["order"] = a.order - } - - return source, nil - -} - -// -- CompositeAggregationHistogramValuesSource -- - -// CompositeAggregationHistogramValuesSource is a source for the CompositeAggregation that handles histograms -// it works very similar to a terms histogram with slightly different syntax -// -// See https://www.elastic.co/guide/en/elasticsearch/reference/6.1/search-aggregations-bucket-composite-aggregation.html#_histogram -// for details. -type CompositeAggregationHistogramValuesSource struct { - name string - field string - script *Script - valueType string - missing interface{} - order string - interval float64 -} - -// NewCompositeAggregationHistogramValuesSource creates and initializes -// a new CompositeAggregationHistogramValuesSource. -func NewCompositeAggregationHistogramValuesSource(name string, interval float64) *CompositeAggregationHistogramValuesSource { - return &CompositeAggregationHistogramValuesSource{ - name: name, - interval: interval, - } -} - -// Field to use for this source. -func (a *CompositeAggregationHistogramValuesSource) Field(field string) *CompositeAggregationHistogramValuesSource { - a.field = field - return a -} - -// Script to use for this source. -func (a *CompositeAggregationHistogramValuesSource) Script(script *Script) *CompositeAggregationHistogramValuesSource { - a.script = script - return a -} - -// ValueType specifies the type of values produced by this source, -// e.g. "string" or "date". -func (a *CompositeAggregationHistogramValuesSource) ValueType(valueType string) *CompositeAggregationHistogramValuesSource { - a.valueType = valueType - return a -} - -// Missing specifies the value to use when the source finds a missing -// value in a document. -func (a *CompositeAggregationHistogramValuesSource) Missing(missing interface{}) *CompositeAggregationHistogramValuesSource { - a.missing = missing - return a -} - -// Order specifies the order in the values produced by this source. -// It can be either "asc" or "desc". -func (a *CompositeAggregationHistogramValuesSource) Order(order string) *CompositeAggregationHistogramValuesSource { - a.order = order - return a -} - -// Asc ensures the order of the values produced is ascending. -func (a *CompositeAggregationHistogramValuesSource) Asc() *CompositeAggregationHistogramValuesSource { - a.order = "asc" - return a -} - -// Desc ensures the order of the values produced is descending. -func (a *CompositeAggregationHistogramValuesSource) Desc() *CompositeAggregationHistogramValuesSource { - a.order = "desc" - return a -} - -// Interval specifies the interval to use. -func (a *CompositeAggregationHistogramValuesSource) Interval(interval float64) *CompositeAggregationHistogramValuesSource { - a.interval = interval - return a -} - -// Source returns the serializable JSON for this values source. -func (a *CompositeAggregationHistogramValuesSource) Source() (interface{}, error) { - source := make(map[string]interface{}) - name := make(map[string]interface{}) - source[a.name] = name - values := make(map[string]interface{}) - name["histogram"] = values - - // field - if a.field != "" { - values["field"] = a.field - } - - // script - if a.script != nil { - src, err := a.script.Source() - if err != nil { - return nil, err - } - values["script"] = src - } - - // missing - if a.missing != nil { - values["missing"] = a.missing - } - - // value_type - if a.valueType != "" { - values["value_type"] = a.valueType - } - - // order - if a.order != "" { - values["order"] = a.order - } - - // Histogram-related properties - values["interval"] = a.interval - - return source, nil - -} - -// -- CompositeAggregationDateHistogramValuesSource -- - -// CompositeAggregationDateHistogramValuesSource is a source for the CompositeAggregation that handles date histograms -// it works very similar to a date histogram aggregation with slightly different syntax -// -// See https://www.elastic.co/guide/en/elasticsearch/reference/6.1/search-aggregations-bucket-composite-aggregation.html#_date_histogram -// for details. -type CompositeAggregationDateHistogramValuesSource struct { - name string - field string - script *Script - valueType string - missing interface{} - order string - interval interface{} - timeZone string -} - -// NewCompositeAggregationDateHistogramValuesSource creates and initializes -// a new CompositeAggregationDateHistogramValuesSource. -func NewCompositeAggregationDateHistogramValuesSource(name string, interval interface{}) *CompositeAggregationDateHistogramValuesSource { - return &CompositeAggregationDateHistogramValuesSource{ - name: name, - interval: interval, - } -} - -// Field to use for this source. -func (a *CompositeAggregationDateHistogramValuesSource) Field(field string) *CompositeAggregationDateHistogramValuesSource { - a.field = field - return a -} - -// Script to use for this source. -func (a *CompositeAggregationDateHistogramValuesSource) Script(script *Script) *CompositeAggregationDateHistogramValuesSource { - a.script = script - return a -} - -// ValueType specifies the type of values produced by this source, -// e.g. "string" or "date". -func (a *CompositeAggregationDateHistogramValuesSource) ValueType(valueType string) *CompositeAggregationDateHistogramValuesSource { - a.valueType = valueType - return a -} - -// Missing specifies the value to use when the source finds a missing -// value in a document. -func (a *CompositeAggregationDateHistogramValuesSource) Missing(missing interface{}) *CompositeAggregationDateHistogramValuesSource { - a.missing = missing - return a -} - -// Order specifies the order in the values produced by this source. -// It can be either "asc" or "desc". -func (a *CompositeAggregationDateHistogramValuesSource) Order(order string) *CompositeAggregationDateHistogramValuesSource { - a.order = order - return a -} - -// Asc ensures the order of the values produced is ascending. -func (a *CompositeAggregationDateHistogramValuesSource) Asc() *CompositeAggregationDateHistogramValuesSource { - a.order = "asc" - return a -} - -// Desc ensures the order of the values produced is descending. -func (a *CompositeAggregationDateHistogramValuesSource) Desc() *CompositeAggregationDateHistogramValuesSource { - a.order = "desc" - return a -} - -// Interval to use for the date histogram, e.g. "1d" or a numeric value like "60". -func (a *CompositeAggregationDateHistogramValuesSource) Interval(interval interface{}) *CompositeAggregationDateHistogramValuesSource { - a.interval = interval - return a -} - -// TimeZone to use for the dates. -func (a *CompositeAggregationDateHistogramValuesSource) TimeZone(timeZone string) *CompositeAggregationDateHistogramValuesSource { - a.timeZone = timeZone - return a -} - -// Source returns the serializable JSON for this values source. -func (a *CompositeAggregationDateHistogramValuesSource) Source() (interface{}, error) { - source := make(map[string]interface{}) - name := make(map[string]interface{}) - source[a.name] = name - values := make(map[string]interface{}) - name["date_histogram"] = values - - // field - if a.field != "" { - values["field"] = a.field - } - - // script - if a.script != nil { - src, err := a.script.Source() - if err != nil { - return nil, err - } - values["script"] = src - } - - // missing - if a.missing != nil { - values["missing"] = a.missing - } - - // value_type - if a.valueType != "" { - values["value_type"] = a.valueType - } - - // order - if a.order != "" { - values["order"] = a.order - } - - // DateHistogram-related properties - values["interval"] = a.interval - - // timeZone - if a.timeZone != "" { - values["time_zone"] = a.timeZone - } - - return source, nil -} |