我想添加一个过滤器 say 以显示包含 say
@log_name
关键字的所有 log
和 test
。我在 Kibana 仪表板上看到以下字段。
当我使用
@log_name is test
添加过滤器时,它不会返回任何结果,但是当我添加 log is test
时,它会返回包含此关键字的所有值。
我也尝试了
@log_name is *test*
和@log_name.keyword is *test*
,但没有得到任何结果。我在这里有以下三个问题:
1。如何添加一个过滤器来返回
test
中包含 @log_name
的值?
更新:我找到了通过编辑查询DSL来添加通配符的方法。
{
"query": {
"wildcard": {
"@log_name": {
"value": "*test*"
}
}
}
}
为什么我能够搜索到包含
log
的test
而不包含@log_name
?Kibana dashbaord 上的 @fieldName、_fieldName、fieldName 是什么意思?
当您将文档索引到 Elasticsearch 时,它会创建一个定义每个字段类型(字符串或文本、长整型、关键字等)的映射。当您查询被分析的文本字段时,您首先搜索该字段的所有标记(通常是组成短语的单词),因此您的日志文件肯定会与单词“test”与该字段的标记进行匹配。也许 @log_name 字段有其他配置,因此请检查映射。
一些可能有帮助的文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
我不太确定你的第三个问题是什么意思,因为所有这些都取决于映射,字段的名称应该不重要。