elasticsearch Kibana 6合并2个过滤器
我有两个过滤器工作良好: 1.与短语“NA”匹配 2.使用脚本字段拉取筛选器以显示不在0-7之间的所有小时数:
elasticsearch Kibana 6合并2个过滤器,
elasticsearch,kibana,kibana-6,
elasticsearch,Kibana,Kibana 6,我有两个过滤器工作良好: 1.与短语“NA”匹配 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'].dat
{
"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"
}
}
}
{
“脚本”:{
“脚本”:{
“内联”:“布尔gte(供应商s,定义v){return s.get()>=v}布尔lt(供应商s,定义v){return s.get(){doc['@timestamp'].date.hourOfDay},params.gte)和<(()->{doc['@timestamp'].date hourOfDay},params.lt)”,
“参数”:{
“gte”:0,
“lt”:7,
“值”:“>=0在使用可视化工具和发现之前,请确保在管理->索引模式->创建索引模式下创建索引模式,并添加要应用过滤器的索引的名称
现在,组合您在问题中添加的查询,组合查询如下所示:
{
"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"
}
}
}
]
}
}
}
{
“查询”:{
“布尔”:{
“必须”:[
{
“region.keyword”:{
“查询”:“不适用”,
“类型”:“短语”
}
},
{
“脚本”:{
“脚本”:{
“内联”:“布尔gte(供应商s,定义v){return s.get()>=v}布尔lt(供应商s,定义v){return s.get(){doc['@timestamp'].date.hourOfDay},params.gte)和<(()->{doc['@timestamp'].date hourOfDay},params.lt)”,
“参数”:{
“gte”:0,
“lt”:7,
“value”:“>=0这是非常有用的,尽管我得到了这个错误”`[parsing_exception]没有[query]为[region.keyword]注册,{line=1&col=646}`这很奇怪,因为它在脚本未加入时工作正常。我发现region.keyword很好。@chowpay,我尝试使用示例映射并使用其字段。keyword
在我的末尾工作正常。包括脚本。您是否也可以尝试使用basic匹配和范围.keyword
来隔离问题与其他字段一样,查看这是否适用于编辑查询DSL
。同时删除第一个查询中的“type”:“phrase”
。首先检查两个查询是否通过Kibana返回响应,然后将它们合并。
{
"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"
}
}
}
]
}
}
}