在kibana3/elastic.js中合并两个过滤器
Merge two filters in kibana3/elastic.js
我在Kibana3:中的自定义面板中有两个过滤器
request = request.query(
$scope.ejs.FilteredQuery(
boolQuery,
filterSrv.getBoolFilter(filterSrv.ids()) // has to be merged with BoolFilter2
))
.size($scope.panel.size);
这适用于两个过滤器中的任何一个,但我想用两个对象进行过滤,但我不知道如何合并它们。有人能帮忙吗?
这转化为如下过滤器:
{
"filter": {
"bool": {
"should": [
{
"fquery": {
"query": {
"query_string": {
"query": "test1"
}
},
"_cache": true
}
},
{
"fquery": {
"query": {
"query_string": {
"query": "test2"
}
},
"_cache": true
}
}
]
}
}
}
以下是Kibana 3中处理该问题的filterSrv代码:https://github.com/elasticsearch/kibana/blob/3.0/src/app/services/filterSrv.js#L144
this.getBoolFilter = function(ids) {
var bool = ejs.BoolFilter();
// there is no way to introspect the BoolFilter and find out if it has a filter. We must keep note.
var added_a_filter = false;
_.each(ids,function(id) {
if(dashboard.current.services.filter.list[id].active) {
added_a_filter = true;
switch(dashboard.current.services.filter.list[id].mandate)
{
case 'mustNot':
bool.mustNot(self.getEjsObj(id));
break;
case 'either':
bool.should(self.getEjsObj(id));
break;
default:
bool.must(self.getEjsObj(id));
}
}
});
// add a match filter so we'd get some data
if (!added_a_filter) {
bool.must(ejs.MatchAllFilter());
}
return bool;
};
this.getEjsObj = function(id) {
return self.toEjsObj(dashboard.current.services.filter.list[id]);
};
您可以修改该函数以采用一个可选参数,该参数将任务设置为任意一个。
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 如何应用带过滤器的ng if来过滤记录,并在同一页面中显示两个不同的视图
- 使用包含过滤器在环回中连接两个模型
- 在kibana3/elastic.js中合并两个过滤器
- CKEditor-如何在两个编辑器中一起使用高级内容过滤器和小部件
- 两个日期之间的自定义过滤器 AngularJS
- 如何使用 Angularjs 过滤器来过滤绑定到两个选择框的数组
- 创建一个包含两个文件 json 的 Angularjs 过滤器
- AngularUI:在应用过滤器的情况下正确更新两个列表之间的模型
- 在Openlayers中组合两个OCG过滤器
- 单击过滤器定位两个元素
- jquery过滤器具有两个不同的数值
- 如何在Angular js中基于两个自定义过滤器过滤数据
- AngularJS ng重复过滤器根据作用域有两个不同的参数
- jQuery/Javascript-连接两个过滤器-只显示tr's与td's正在匹配一个数组
- Jquery mobile -如何为两个数据集使用listview数据过滤器
- 如何在angular js中向自定义过滤器传递两个参数
- 如何合并两个过滤器(AND操作)