我在对“log_message”字段使用前缀过滤器时遇到 Elastisearch Query DSL 问题。 目标是显示“log_message”字段具有“Started”前缀的日志。但是,过滤器还包括“已开始”出现在消息中间(而不仅仅是开头)的行。 这是我的查询:
{
"prefix": {
"log_message": "started"
}
}
她是我的logstash 模式:
%{TIMESTAMP_ISO8601:时间戳} |%{SPACE}%{LOGLEVEL:log_level}%{SPACE}|%{SPACE}[%{DATA:线程}]%{SPACE}---%{SPACE}%{NUMBER: process_id}%{SPACE}|%{SPACE}%{DATA:class}%{SPACE}| |%{SPACE}%{GREEDYDATA:log_message}( | )?
我尝试重新启动 elastisearch 和logstash,但问题仍然存在
您有多个查询选项,每个选项都有自己的优点和用例:
此查询对于查找在指定字段开头找到给定单词的文档非常有用。
{
"query": {
"match_phrase_prefix": {
"log_message": "Started"
}
}
}
此查询允许您使用通配符(
*
、?
)来搜索模式。
{
"query": {
"wildcard": {
"log_message.keyword": "*Started*"
}
}
}
此查询支持用于解析和搜索复杂文本的强大语法。
{
"query": {
"query_string": {
"default_field": "log_message",
"query": "*Started*"
}
}
}
每种查询类型都有自己的优势和理想的用例,因此选择取决于您的数据的具体情况以及您需要什么样的搜索灵活性。