elasticsearch - Kibana 6 合并 2 个过滤器
问题描述
我有 2 个效果很好的过滤器: 1. 匹配短语“NA”
{
"query": {
"match": {
"region.keyword": {
"query": "NA",
"type": "phrase"
}
}
}
}
2.使用一个脚本化的字段来拉取过滤器以显示不介于 0-7 之间的所有时间:
{
"script": {
"script": {
"inline": "boolean gte(Supplier s, def v) {return s.get() >= v} boolean lt(Supplier s, def v) {return s.get() < v}gte(() -> { doc['@timestamp'].date.hourOfDay }, params.gte) && lt(() -> { doc['@timestamp'].date.hourOfDay }, params.lt)",
"params": {
"gte": 0,
"lt": 7,
"value": ">=0 <7"
},
"lang": "painless"
}
}
}
我想将其分组到一个过滤器中,这样它的“NA 小时不在 0-7 之间”这样我就可以更改区域和时间并仍然应用其他过滤器。
也不确定如何添加这种自定义过滤器,因为添加过滤器只允许我输入 1 个字段
解决方案
在使用可视化工具和发现之前,请确保在Management -> Index Pattern -> Create index pattern
` 下创建索引模式并添加要应用过滤器的索引的名称。
现在,结合您在问题中添加的查询,组合查询将如下所示:
{
"query": {
"bool": {
"must": [
{
"region.keyword": {
"query": "NA",
"type": "phrase"
}
},
{
"script": {
"script": {
"inline": "boolean gte(Supplier s, def v) {return s.get() >= v} boolean lt(Supplier s, def v) {return s.get() < v}gte(() -> { doc['@timestamp'].date.hourOfDay }, params.gte) && lt(() -> { doc['@timestamp'].date.hourOfDay }, params.lt)",
"params": {
"gte": 0,
"lt": 7,
"value": ">=0 <7"
},
"lang": "painless"
}
}
}
]
}
}
}
发现部分
在Kibana 的Discover部分,选择索引名称index pattern section
(请参阅图片链接),然后单击Add a filter
,在右侧您会看到一个选项Edit Query DSL
。
复制并粘贴上述查询。您应该能够看到结果,Document Table
即图表下的文档详细信息。
展示台
好吧,如果这与特定的可视化工具(或发现选项卡)有关,您没有在问题中提到,但是就像我们在发现部分添加过滤器的方式一样,您也可以在可视化工具中这样做(例如在Metric Visualizer
您将在)Edit Query DSL
下看到部分Add a filter
让我知道这是否有帮助!
推荐阅读
- python - 捕获外部程序的连续输出
- ios - 斯威夫特认为非零值实际上是零
- jsp - c:out 没有在 jsp 文件中给出输出
- python - 生成对象问题
- logging - 有什么方法可以添加限制数据以使用winston记录
- laravel - Laravel 测试记住我 cookie
- wpf - DataGrid AutoGenerateColumns 错误模板
- neo4j - 如何修复错误“Neo.ClientError.Statement.SemanticError:无法使用名称的空属性值合并节点”?
- c# - 通过主题和令牌发送消息
- javascript - 购物车功能如何从 php 中的 2 个不同表中获取产品