Kibana脚本字段多条件结果汇总实现失败求助
搞定Kibana脚本字段第三个分支不生效的问题
嘿,我一眼就看出问题所在了——你的第三个else if分支根本没机会执行!
原因很简单:前两个if和else if已经把第三个分支里的两个判断条件完全覆盖了:
- 只要文档符合
(doc['some_field'].value == some value) && (doc['some_field2'].value == some value2),第一个分支直接return "some text",程序直接结束,不会往下走 - 只要文档符合
(doc['some_field'].value == some value3) && (doc['some_field2'].value == some value4),第二个分支直接return "some text2",同样不会触发第三个分支
等于第三个分支的判断逻辑被前面的分支“堵死”了,自然不会有结果返回。另外还要提个醒:你脚本里用的是=赋值运算符,不是==比较运算符!这是个低级但致命的错误——一定要把判断里的=改成==,不然你的逻辑根本不是在比较值,而是在给字段赋值,结果肯定不对。
下面根据你可能的真实需求,给几个可行的解决方案:
需求1:把同时满足前两个条件的特殊情况归为第三个分支
如果你的字段是数组类型(比如some_field可能同时包含some value和some value3),需要优先判断这种复合情况,那把第三个分支的判断移到最前面:
if( ((doc['some_field'].value == some value) && (doc['some_field2'].value == some value2)) || ((doc['some_field'].value == some value3) && (doc['some_field2'].value == some value4)) ) { return "some text3" } else if((doc['some_field'].value == some value) && (doc['some_field2'].value == some value2)) { return "some text" } else if((doc['some_field'].value == some value3) && (doc['some_field2'].value == some value4)) { return "some text2" }
需求2:把不满足前两个精准匹配的所有情况归为第三个分支
这应该是最常见的需求——前两个分支处理特定的字段组合,剩下的所有情况统一返回some text3。这种情况下不需要第三个else if,直接用else就行:
if((doc['some_field'].value == some value) && (doc['some_field2'].value == some value2)) { return "some text" } else if((doc['some_field'].value == some value3) && (doc['some_field2'].value == some value4)) { return "some text2" } else { return "some text3" }
需求3:提取满足单个字段匹配但另一个不匹配的情况
比如some_field是some value但some_field2不是some value2,或者some_field是some value3但some_field2不是some value4,这种情况返回some text3。脚本可以这么写:
if((doc['some_field'].value == some value) && (doc['some_field2'].value == some value2)) { return "some text" } else if((doc['some_field'].value == some value3) && (doc['some_field2'].value == some value4)) { return "some text2" } else if( doc['some_field'].value == some value || doc['some_field'].value == some value3 ) { return "some text3" } else { // 可以加个默认返回值,比如空字符串或者"其他" return "" }
内容的提问来源于stack exchange,提问作者MinakshiG
相关产品推荐
相关产品推荐

