Winlogbeat 不区分大小写的搜索
Winlogbeat case insensitive search
在 Kibana 中使用 Discover 时,我可以输入“hostxyz”,系统将执行不区分大小写的搜索。
但是,当执行相同类型的搜索但针对特定字段时,例如 winlog.computer_name: "hostxyz"
,查询将区分大小写。
我已提取此示例的映射,如下所示。
"computer_name": {
"type": "keyword",
"ignore_above": 1024
},
这可能是一个显而易见的问题,但有人能指出我在这里做错了什么吗?
computer_name 字段的类型是关键字,这使其成为区分大小写的字段,并且对该字段的任何搜索都将区分大小写。
搜索不仅区分大小写,而且按原样搜索,这意味着搜索词应与字段中的值完全匹配。
如果你想让它不区分大小写,你可以这样做。
在您的索引中创建以下分析器
"analyzer": {
"keyword_lowercase": {
"tokenizer": "keyword",
"filter": [
"lowercase"
]
}
}
然后,按如下方式更改索引中的映射
"computer_name": {
"type": "text",
"analyzer": "keyword_lowercase",
"ignore_above": 1024
}
这仍然是关键字搜索(完全匹配),但会索引数据并生成小写标记。
对于通用搜索,您可以使用标准分析器(默认情况下具有小写过滤器)代替 keyword_lowercase。
或者您可以简单地完全省略“analyzer”字段,elasticsearch 将默认为您的字段使用标准分析器。
更好的方法可能是使用多字段以多种方式分析 computer_name,例如
"computer_name": {
"type": "text",
"ignore_above": 1024
"fields": {
"lowercase_keyword": {
"type": "text",
"analyzer": "keyword_lowercase",
"ignore_above": 1024
}
}
}
您可以在查询中使用 computer_name 字段进行一般搜索,并使用 computer_name.lowercase_keyword 进行关键字(精确)匹配。
在 Kibana 中使用 Discover 时,我可以输入“hostxyz”,系统将执行不区分大小写的搜索。
但是,当执行相同类型的搜索但针对特定字段时,例如 winlog.computer_name: "hostxyz"
,查询将区分大小写。
我已提取此示例的映射,如下所示。
"computer_name": {
"type": "keyword",
"ignore_above": 1024
},
这可能是一个显而易见的问题,但有人能指出我在这里做错了什么吗?
computer_name 字段的类型是关键字,这使其成为区分大小写的字段,并且对该字段的任何搜索都将区分大小写。
搜索不仅区分大小写,而且按原样搜索,这意味着搜索词应与字段中的值完全匹配。
如果你想让它不区分大小写,你可以这样做。
在您的索引中创建以下分析器
"analyzer": {
"keyword_lowercase": {
"tokenizer": "keyword",
"filter": [
"lowercase"
]
}
}
然后,按如下方式更改索引中的映射
"computer_name": {
"type": "text",
"analyzer": "keyword_lowercase",
"ignore_above": 1024
}
这仍然是关键字搜索(完全匹配),但会索引数据并生成小写标记。
对于通用搜索,您可以使用标准分析器(默认情况下具有小写过滤器)代替 keyword_lowercase。 或者您可以简单地完全省略“analyzer”字段,elasticsearch 将默认为您的字段使用标准分析器。 更好的方法可能是使用多字段以多种方式分析 computer_name,例如
"computer_name": {
"type": "text",
"ignore_above": 1024
"fields": {
"lowercase_keyword": {
"type": "text",
"analyzer": "keyword_lowercase",
"ignore_above": 1024
}
}
}
您可以在查询中使用 computer_name 字段进行一般搜索,并使用 computer_name.lowercase_keyword 进行关键字(精确)匹配。