Kibana Discover中实现类似LIKE的模糊搜索方法咨询
在Kibana Discover中实现类似
LIKE '%foo%bar%'的模糊匹配 兄弟,先直接给你结论:只在字符串两端加单引号是达不到你要的效果的——单引号在Kibana里是用来做精确匹配的,比如搜'foobar'只会找到完全等于这个字符串的结果,没法实现中间任意内容的模糊匹配。
下面给你几个实用的方法,都能实现你要的「以foo开头、中间任意内容、以bar结尾」的搜索逻辑:
1. 最直接的:通配符搜索
Kibana支持用*作为通配符(匹配任意长度的字符,包括0个),你直接在搜索框里输入:
foo*bar
这个就完全对应SQL里的LIKE 'foo%bar'。如果你的目标是特定字段(比如log_content字段),可以明确指定字段:
log_content:foo*bar
2. 更灵活的:布尔逻辑(按需选择)
如果你只是想确保字符串里同时包含foo和bar(不严格要求顺序),可以用布尔运算符AND:
foo AND bar
不过注意这个会匹配所有同时有foo和bar的内容,不管谁在前谁在后。如果要严格保证foo在bar之前,还是用通配符更准确。
3. 复杂场景用:正则表达式搜索
要是你有更复杂的匹配规则(比如中间不能有某些字符),可以用正则表达式,用/把表达式包起来:
/foo.*bar/
这里的.*和SQL里的%作用一样,代表任意字符(除换行)任意次数。同样可以指定字段:
log_content:/foo.*bar/
最后提个小建议:通配符和正则搜索在大索引上可能会慢一点,如果你的字段是keyword类型的话,性能会比text类型好一些,所以尽量确保你搜索的字段是适合模糊匹配的类型~
内容的提问来源于stack exchange,提问作者Maarduk




