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: 件删除失败