| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package elasticsearch
- import (
- "github.com/grafana/grafana/pkg/components/simplejson"
- "bytes"
- "fmt"
- "encoding/json"
- )
- type QueryHeader struct {
- SearchType string `json:"search_type"`
- IgnoreUnavailable bool `json:"ignore_unavailable"`
- Index interface{} `json:"index"`
- MaxConcurrentShardRequests int `json:"max_concurrent_shard_requests"`
- }
- func (q *QueryHeader) String() (string) {
- r, _ := json.Marshal(q)
- return string(r)
- }
- type Query struct {
- Query map[string]interface{} `json:"query"`
- Aggs Aggs `json:"aggs"`
- Size int `json:"size"`
- }
- type Aggs map[string]interface{}
- type HistogramAgg struct {
- Interval string `json:"interval,omitempty"`
- Field string `json:"field"`
- MinDocCount int `json:"min_doc_count"`
- Missing string `json:"missing,omitempty"`
- }
- type DateHistogramAgg struct {
- HistogramAgg
- ExtendedBounds ExtendedBounds `json:"extended_bounds"`
- Format string `json:"format"`
- }
- type FiltersAgg struct {
- Filter map[string]interface{} `json:"filter"`
- }
- type TermsAggSetting struct {
- Field string `json:"field"`
- Size int `json:"size"`
- Order map[string]interface{} `json:"order"`
- MinDocCount int `json:"min_doc_count"`
- Missing string `json:"missing"`
- }
- type TermsAgg struct {
- Terms TermsAggSetting `json:"terms"`
- Aggs Aggs `json:"aggs"`
- }
- type ExtendedBounds struct {
- Min string `json:"min"`
- Max string `json:"max"`
- }
- type RangeFilter struct {
- Range map[string]RangeFilterSetting `json:"range"`
- }
- type RangeFilterSetting struct {
- Gte string `json:"gte"`
- Lte string `json:"lte"`
- Format string `json:"format"`
- }
- func newRangeFilter(field string, rangeFilterSetting RangeFilterSetting) *RangeFilter {
- return &RangeFilter{
- map[string]RangeFilterSetting{field: rangeFilterSetting}}
- }
- type QueryStringFilter struct {
- QueryString QueryStringFilterSetting `json:"query_string"`
- }
- type QueryStringFilterSetting struct {
- AnalyzeWildcard bool `json:"analyze_wildcard"`
- Query string `json:"query"`
- }
- func newQueryStringFilter(analyzeWildcard bool, query string) *QueryStringFilter {
- return &QueryStringFilter{QueryStringFilterSetting{AnalyzeWildcard: analyzeWildcard, Query: query}}
- }
- type BoolQuery struct {
- Filter []interface{} `json:"filter"`
- }
- type Metric map[string]interface{}
- type Responses struct {
- Responses []Response `json:"responses"`
- }
- type Response struct {
- Status int `json:"status"`
- Err map[string]interface{} `json:"error"`
- Aggregations map[string]interface{} `json:"aggregations"`
- }
- func (r *Response) getErrMsg() (string) {
- var msg bytes.Buffer
- errJson := simplejson.NewFromAny(r.Err)
- errType, err := errJson.Get("type").String()
- if err == nil {
- msg.WriteString(fmt.Sprintf("type:%s", errType))
- }
- reason, err := errJson.Get("type").String()
- if err == nil {
- msg.WriteString(fmt.Sprintf("reason:%s", reason))
- }
- return msg.String()
- }
|