elasticsearch.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package elasticsearch
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/grafana/grafana/pkg/log"
  6. "github.com/grafana/grafana/pkg/models"
  7. "github.com/grafana/grafana/pkg/tsdb"
  8. "github.com/grafana/grafana/pkg/tsdb/elasticsearch/client"
  9. )
  10. // ElasticsearchExecutor represents a handler for handling elasticsearch datasource request
  11. type ElasticsearchExecutor struct{}
  12. var (
  13. glog log.Logger
  14. intervalCalculator tsdb.IntervalCalculator
  15. )
  16. // NewElasticsearchExecutor creates a new elasticsearch executor
  17. func NewElasticsearchExecutor(dsInfo *models.DataSource) (tsdb.TsdbQueryEndpoint, error) {
  18. return &ElasticsearchExecutor{}, nil
  19. }
  20. func init() {
  21. glog = log.New("tsdb.elasticsearch")
  22. intervalCalculator = tsdb.NewIntervalCalculator(nil)
  23. tsdb.RegisterTsdbQueryEndpoint("elasticsearch", NewElasticsearchExecutor)
  24. }
  25. // Query handles an elasticsearch datasource request
  26. func (e *ElasticsearchExecutor) Query(ctx context.Context, dsInfo *models.DataSource, tsdbQuery *tsdb.TsdbQuery) (*tsdb.Response, error) {
  27. if len(tsdbQuery.Queries) == 0 {
  28. return nil, fmt.Errorf("query contains no queries")
  29. }
  30. client, err := es.NewClient(ctx, dsInfo, tsdbQuery.TimeRange)
  31. if err != nil {
  32. return nil, err
  33. }
  34. query := newTimeSeriesQuery(client, tsdbQuery, intervalCalculator)
  35. return query.execute()
  36. }