elasticsearch之多条件查询

341 阅读1分钟

elasticsearch之多条件查询

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "fields.application_name": "enn-smart-operation-energy-web"
          }
        },
        {
          "match_phrase": {
            "message": "文件删除失败"
          }
        },
        {
          "match_phrase": {
            "message": "error"
          }
        }
      ]
    }
  }
}

Kibana Query Language

  1. 字段名:用于指定要搜索的字段名称。例如,message字段。
  2. 值:用于指定要搜索的值。例如,error
  3. 运算符:用于指定如何比较字段和值之间的关系。例如,:表示相等,>表示大于,<表示小于,>=表示大于等于,<=表示小于等于,!=表示不等于,AND表示逻辑与,OR表示逻辑或。
  4. 通配符:用于匹配模式。例如,*表示任意字符,?表示任意单个字符。
  5. 括号:用于分组逻辑操作。例如,(message: error OR message: warning) AND timestamp:>now-1h
  6. 常量:用于表示特殊意义的值。例如,now表示当前时间,today表示今天,yesterday表示昨天,last week表示上周。
  7. 范围查询:用于查询一定范围内的值。例如,timestamp: [now-1h TO now]表示在过去一小时内的日志。
  8. 正则表达式:用于匹配复杂模式。例如,message:/error|warning/表示匹配包含errorwarning的消息。
  9. 字段别名:用于简化查询。例如,@message表示message字段的别名。

总体来说,KQL的语法相对简单,但可以通过组合运算符、通配符、括号和常量等元素来构建复杂的查询。

举例

fields.application_name :energy and message : error and message: 件删除失败