You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kibana:如何让两个DSL查询按钮实现OR逻辑而非AND

可以实现,以下是具体解决方法

方法一:利用Kibana过滤器组实现OR逻辑

这是最直观的操作方式,无需手动编写复杂DSL:

  1. 在Discover页面,先创建第一个过滤器:点击日志内容里的INFO关键词,选择「Add filter」,生成匹配INFO级别的过滤器
  2. 找到该过滤器右侧的⋮菜单,选择Add filter to group,在弹出选项里设置组的逻辑关系为OR
  3. 接着创建第二个过滤器:点击日志里的ERROR关键词,选择「Add filter」,再把这个过滤器拖拽到刚才创建的OR组中
  4. 完成后,这个OR组内的两个过滤器会按OR逻辑生效:单独启用其中一个,过滤对应级别日志;同时启用两个,会展示所有INFO或ERROR级别的日志

方法二:自定义DSL实现组合逻辑

如果需要手动控制查询语句,可以把两个条件合并为一个OR查询(但此方法无法保留两个独立的启用/禁用按钮,仅做补充参考):
创建包含OR逻辑的过滤器,DSL如下:

{
  "query": {
    "bool": {
      "should": [
        { "match_phrase": { "message": "INFO" } },
        { "match_phrase": { "message": "ERROR" } }
      ],
      "minimum_should_match": 1
    }
  }
}

问题根源说明

你之前遇到无结果的情况,是因为Kibana默认会把多个独立过滤器放入bool.must中,强制使用AND逻辑,而过滤器组功能可以让你自定义组内过滤器的逻辑关系,正好解决你的需求。

内容的提问来源于stack exchange,提问作者amsmota

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:25:23