Browse Source

feat(elasticsearch): added geo hash bucket aggregation

Torkel Ödegaard 9 years ago
parent
commit
69c2fafa7a

+ 11 - 0
public/app/plugins/datasource/elasticsearch/bucket_agg.js

@@ -60,6 +60,10 @@ function (angular, _, queryDef) {
           $scope.agg.query = '*';
           $scope.agg.query = '*';
           break;
           break;
         }
         }
+        case 'geohash_grid': {
+          $scope.agg.settings.precision = 3;
+          break;
+        }
       }
       }
 
 
       $scope.validateModel();
       $scope.validateModel();
@@ -121,6 +125,13 @@ function (angular, _, queryDef) {
           if (settings.trimEdges && settings.trimEdges > 0) {
           if (settings.trimEdges && settings.trimEdges > 0) {
             settingsLinkText += ', Trim edges: ' + settings.trimEdges;
             settingsLinkText += ', Trim edges: ' + settings.trimEdges;
           }
           }
+          break;
+        }
+        case 'geohash_grid': {
+          // limit precision to 7
+          settings.precision = Math.max(Math.min(settings.precision, 7), 1);
+          settingsLinkText = 'Precision: ' + settings.precision;
+          break;
         }
         }
       }
       }
 
 

+ 7 - 0
public/app/plugins/datasource/elasticsearch/partials/bucket_agg.html

@@ -86,6 +86,13 @@
 		</div>
 		</div>
 	</div>
 	</div>
 
 
+	<div ng-if="agg.type === 'geohash_grid'">
+		<div class="gf-form offset-width-7">
+			<label class="gf-form-label">Precision</label>
+			<input type="number" class="gf-form-input max-width-12" ng-model="agg.settings.precision" spellcheck='false' placeholder="3" ng-blur="onChangeInternal()">
+		</div>
+	</div>
+
 </div>
 </div>
 
 
 
 

+ 4 - 0
public/app/plugins/datasource/elasticsearch/query_builder.js

@@ -153,6 +153,10 @@ function (queryDef) {
           this.buildTermsAgg(aggDef, esAgg, target);
           this.buildTermsAgg(aggDef, esAgg, target);
           break;
           break;
         }
         }
+        case 'geohash_grid': {
+          esAgg['geohash_grid'] = {field: aggDef.field, precision: aggDef.settings.precision};
+          break;
+        }
       }
       }
 
 
       nestedAggs.aggs = nestedAggs.aggs || {};
       nestedAggs.aggs = nestedAggs.aggs || {};

+ 1 - 0
public/app/plugins/datasource/elasticsearch/query_def.js

@@ -22,6 +22,7 @@ function (_) {
     bucketAggTypes: [
     bucketAggTypes: [
       {text: "Terms",           value: 'terms', requiresField: true},
       {text: "Terms",           value: 'terms', requiresField: true},
       {text: "Filters",         value: 'filters' },
       {text: "Filters",         value: 'filters' },
+      {text: "Geo Hash Grid",        value: 'geohash_grid', requiresField: true},
       {text: "Date Histogram",  value: 'date_histogram', requiresField: true},
       {text: "Date Histogram",  value: 'date_histogram', requiresField: true},
     ],
     ],