diff --git a/pkg/tsdb/elasticsearch/client/search_request.go b/pkg/tsdb/elasticsearch/client/search_request.go index cafd25f16f5..ed8946b92a6 100644 --- a/pkg/tsdb/elasticsearch/client/search_request.go +++ b/pkg/tsdb/elasticsearch/client/search_request.go @@ -9,6 +9,7 @@ const ( HighlightPreTagsString = "@HIGHLIGHT@" HighlightPostTagsString = "@/HIGHLIGHT@" HighlightFragmentSize = 2147483647 + DefaultGeoHashPrecision = 3 ) // SearchRequestBuilder represents a builder which can build a search request @@ -452,7 +453,7 @@ func (b *aggBuilderImpl) Filters(key string, fn func(a *FiltersAggregation, b Ag func (b *aggBuilderImpl) GeoHashGrid(key, field string, fn func(a *GeoHashGridAggregation, b AggBuilder)) AggBuilder { innerAgg := &GeoHashGridAggregation{ Field: field, - Precision: 5, + Precision: DefaultGeoHashPrecision, } aggDef := newAggDef(key, &aggContainer{ Type: "geohash_grid", diff --git a/pkg/tsdb/elasticsearch/data_query.go b/pkg/tsdb/elasticsearch/data_query.go index 14bb5eaad5e..f7e9dd5258c 100644 --- a/pkg/tsdb/elasticsearch/data_query.go +++ b/pkg/tsdb/elasticsearch/data_query.go @@ -269,7 +269,7 @@ func addFiltersAgg(aggBuilder es.AggBuilder, bucketAgg *BucketAgg) es.AggBuilder func addGeoHashGridAgg(aggBuilder es.AggBuilder, bucketAgg *BucketAgg) es.AggBuilder { aggBuilder.GeoHashGrid(bucketAgg.ID, bucketAgg.Field, func(a *es.GeoHashGridAggregation, b es.AggBuilder) { - a.Precision = stringToIntWithDefaultValue(bucketAgg.Settings.Get("precision").MustString(), 3) + a.Precision = stringToIntWithDefaultValue(bucketAgg.Settings.Get("precision").MustString(), es.DefaultGeoHashPrecision) aggBuilder = b }) diff --git a/public/app/plugins/datasource/elasticsearch/QueryBuilder.ts b/public/app/plugins/datasource/elasticsearch/QueryBuilder.ts index b55be456509..b1a23287ea8 100644 --- a/public/app/plugins/datasource/elasticsearch/QueryBuilder.ts +++ b/public/app/plugins/datasource/elasticsearch/QueryBuilder.ts @@ -7,7 +7,13 @@ import { isPipelineAggregation, isPipelineAggregationWithMultipleBucketPaths, } from './components/QueryEditor/MetricAggregationsEditor/aggregations'; -import { defaultBucketAgg, defaultMetricAgg, findMetricById, highlightTags } from './queryDef'; +import { + defaultBucketAgg, + defaultMetricAgg, + findMetricById, + highlightTags, + defaultGeoHashPrecisionString, +} from './queryDef'; import { ElasticsearchQuery, TermsQuery, @@ -231,7 +237,7 @@ export class ElasticQueryBuilder { case 'geohash_grid': { esAgg['geohash_grid'] = { field: aggDef.field, - precision: aggDef.settings?.precision, + precision: aggDef.settings?.precision || defaultGeoHashPrecisionString, }; break; } diff --git a/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/SettingsEditor/useDescription.ts b/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/SettingsEditor/useDescription.ts index faa9c431780..5def15faa55 100644 --- a/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/SettingsEditor/useDescription.ts +++ b/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/SettingsEditor/useDescription.ts @@ -1,3 +1,5 @@ +import { defaultGeoHashPrecisionString } from 'app/plugins/datasource/elasticsearch/queryDef'; + import { BucketAggregation } from '../../../../types'; import { describeMetric, convertOrderByToMetricId } from '../../../../utils'; import { useQuery } from '../../ElasticsearchQueryContext'; @@ -61,7 +63,8 @@ export const useDescription = (bucketAgg: BucketAggregation): string => { } case 'geohash_grid': { - const precision = Math.max(Math.min(parseInt(bucketAgg.settings?.precision || '5', 10), 12), 1); + const precision = parseInt(bucketAgg.settings?.precision || defaultGeoHashPrecisionString, 10); + return `Precision: ${precision}`; } diff --git a/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/utils.ts b/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/utils.ts index 60ecba4d87e..e873a07cda4 100644 --- a/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/utils.ts +++ b/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/utils.ts @@ -1,5 +1,6 @@ import { InternalTimeZones, SelectableValue } from '@grafana/data'; +import { defaultGeoHashPrecisionString } from '../../../queryDef'; import { BucketsConfiguration } from '../../../types'; import { defaultFilter } from './SettingsEditor/FiltersSettingsEditor/utils'; @@ -26,7 +27,7 @@ export const bucketAggregationConfig: BucketsConfiguration = { label: 'Geo Hash Grid', requiresField: true, defaultSettings: { - precision: '3', + precision: defaultGeoHashPrecisionString, }, }, date_histogram: { diff --git a/public/app/plugins/datasource/elasticsearch/queryDef.ts b/public/app/plugins/datasource/elasticsearch/queryDef.ts index 5ae125269dd..77a8a01b824 100644 --- a/public/app/plugins/datasource/elasticsearch/queryDef.ts +++ b/public/app/plugins/datasource/elasticsearch/queryDef.ts @@ -32,6 +32,8 @@ export const highlightTags = { post: '@/HIGHLIGHT@', }; +export const defaultGeoHashPrecisionString = '3'; + export function defaultMetricAgg(id = '1'): MetricAggregation { return { type: 'count', id }; }