فهرست منبع

derivequeries: added Query Mode option

Nikolay Bryskin 12 سال پیش
والد
کامیت
a03501031d
2فایلهای تغییر یافته به همراه19 افزوده شده و 5 حذف شده
  1. 9 4
      panels/derivequeries/editor.html
  2. 10 1
      panels/derivequeries/module.js

+ 9 - 4
panels/derivequeries/editor.html

@@ -1,17 +1,22 @@
 <div>
   <div class="row-fluid">    
     <div class="span12">
-      The derive queries panel takes a query and a field, then runs a terms facet against both and generates a list of terms to query on. For example, you might want to see a histogram of the top 5 requests that return a 404. <strong>You should be careful not to select a high cardinality field</strong> as Elasticsearch must load all of these values into memory.
+      The derive queries panel takes a query and a field, then runs a terms facet against both and generates a list of terms to query on. For example, you might want to see a histogram of the top 5 requests that return a 404. <strong>You should be careful not to select a high cardinality field</strong> as Elasticsearch must load all of these values into memory.<p>
+      Query Mode allows to optionally append original query to each term in the list.
     </div>
   </div>
   <div class="row-fluid">
-    <div class="span3">
+    <div class="span1">
       <label class="small">Length</label>
       <input type="number" style="width:80%" ng-model="panel.size" ng-change="set_refresh(true)">
     </div>
+    <div class="span3">
+      <label class="small">Query Mode</label>
+      <select style="width:80%" ng-change="set_refresh(true)" ng-model='panel.mode' ng-options="f for f in ['terms only','AND', 'OR']"></select>
+    </div>
     <div class="span8">
       <label class="small">Exclude Terms(s) (comma seperated)</label>
-        <input array-join type="text" style="width:90%" ng-change="set_refresh(true)" ng-model='panel.exclude'></input>
+      <input array-join type="text" style="width:90%" ng-change="set_refresh(true)" ng-model='panel.exclude'></input>
     </div>
   </div>
-</div>
+</div>

+ 10 - 1
panels/derivequeries/module.js

@@ -10,6 +10,7 @@
   * field :: the field to facet on
   * size :: how many queries to generate
   * fields :: a list of fields known to us
+  * query_mode :: how to create query
   
   ### Group Events
   #### Sends
@@ -33,6 +34,7 @@ angular.module('kibana.derivequeries', [])
     fields  : [],
     spyable : true,
     size    : 5,
+    mode    : 'terms only',
     exclude : []
   }
   _.defaults($scope.panel,_d);
@@ -80,8 +82,15 @@ angular.module('kibana.derivequeries', [])
     results.then(function(results) {
       $scope.panel.loading = false;
       var data = [];
+      if ($scope.panel.query === '' || $scope.panel.mode === 'terms only') {
+        var suffix = '';
+      } else if ($scope.panel.mode === 'AND') {
+        var suffix = ' AND ' + $scope.panel.query;
+      } else if ($scope.panel.mode === 'OR') {
+        var suffix = ' OR ' + $scope.panel.query;
+      }
       _.each(results.facets.query.terms, function(v) {
-        data.push($scope.panel.field+':"'+v.term+'" AND ' + ($scope.panel.query || '*'))
+        data.push($scope.panel.field+':"'+v.term+'"'+suffix)
       });
       $scope.send_query(data)
     });