我有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个字段
答案 0 :(得分: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
中看到结果,即图表下的文档详细信息。
好吧,您没有在问题中提到这是否与特定的可视化器(或“发现”选项卡)相关,但是就像我们在“发现”部分添加过滤器的方式一样,您可以在visualizers中这样做(例如,在Metric Visualizer
中,您将在Edit Query DSL
下看到Add a filter
部分)
让我知道这是否有帮助!