elasticsearch之多条件查询
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"fields.application_name": "enn-smart-operation-energy-web"
}
},
{
"match_phrase": {
"message": "文件删除失败"
}
},
{
"match_phrase": {
"message": "error"
}
}
]
}
}
}
Kibana Query Language
- 字段名:用于指定要搜索的字段名称。例如,
message字段。 - 值:用于指定要搜索的值。例如,
error。 - 运算符:用于指定如何比较字段和值之间的关系。例如,
:表示相等,>表示大于,<表示小于,>=表示大于等于,<=表示小于等于,!=表示不等于,AND表示逻辑与,OR表示逻辑或。 - 通配符:用于匹配模式。例如,
*表示任意字符,?表示任意单个字符。 - 括号:用于分组逻辑操作。例如,
(message: error OR message: warning) AND timestamp:>now-1h - 常量:用于表示特殊意义的值。例如,
now表示当前时间,today表示今天,yesterday表示昨天,last week表示上周。 - 范围查询:用于查询一定范围内的值。例如,
timestamp: [now-1h TO now]表示在过去一小时内的日志。 - 正则表达式:用于匹配复杂模式。例如,
message:/error|warning/表示匹配包含error或warning的消息。 - 字段别名:用于简化查询。例如,
@message表示message字段的别名。
总体来说,KQL的语法相对简单,但可以通过组合运算符、通配符、括号和常量等元素来构建复杂的查询。
举例
fields.application_name :energy and message : error and message: 件删除失败