elasticsearch - 如何使用 [] 搜索字符串
问题描述
在kibana中,如何搜索所有MESSAGES
包含的字符串[]
?
如果我使用"hostname []"
它进行搜索MESSAGE
,如下图所示匹配完整的有效负载,但是如何匹配所有包含空[]
忽略字段的记录,例如hostname [3]
但包括条目foo bar hostname []
?
解决方案
标准分词器会在遇到空格或标点符号时拆分单词,不包括特殊字符,您可以看到 elasticsearch 是如何分析的:
GET _analyze
{
"analyzer" : "standard",
"text" : "function []"
}
{
"tokens": [
{
"token": "function",
"start_offset": 0,
"end_offset": 8,
"type": "<ALPHANUM>",
"position": 0
}
]
}
正在排除[]
,现在让我们用whitespace
分析仪测试
GET _analyze
{
"analyzer" : "whitespace",
"text" : "function []"
}
{
"tokens": [
{
"token": "function",
"start_offset": 0,
"end_offset": 8,
"type": "word",
"position": 0
},
{
"token": "[]",
"start_offset": 9,
"end_offset": 11,
"type": "word",
"position": 1
}
]
}
所以对于这个特定的场景,只需在映射中进行更改,在whitespace
分析器的字段中设置:
"MESSAGE": {
"type": "text",
"analyzer" : "whitespace"
}
推荐阅读
- c# - Datetimeoffset 没有给出正确的格式
- r - 是否有更快的方法对数据框中的选定列进行逐行求和?
- amazon-web-services - 如何在 .Net Core API 中安全地存储 AWS 访问密钥和秘密密钥
- python - 将 django-music-publisher==21.5.1 集成到 django-oscar 3.1 应用程序中会引发“django.core.exceptions.AppRegistryNotReady:模型尚未加载”。
- flutter - ReorderableListView 和 sqflite,调用重新排序时更新数据库的最佳方法?
- r - 在ggdag中可视化pcAlgo对象?
- java - Minecraft 服务器资源包管理器应用程序
- laravel - Laravel 5 通过干预传递模型
- javascript - 如何在 ReactJs 中按属性过滤数量
- android - 来自(http)的反应本机图像在发布到.apk后不会出现