Vin*_*han 5 logging elasticsearch logstash
通过使用GROK filter
,我们可以向Logstash添加新字段.
但是,在这里,我想知道如何为该特定字段设置分析器.
例如:,我有一个新的id字段,它有一个字段a_b
,但是Elasticsearch发布的普通分析器会将其分解为a
和b
.因此,我无法有效地在该特定字段上应用术语功能并使其有用.
这里对于ID字段,我想应用我自己的自定义分析器,它不会对值进行标记,而是应用小写过滤器.
如何在logstash中完成此操作.
小智 9
Elasticsearch中的默认分析器将使用标准标记器对标记术语进行标记,标记标记符将标记a b
为两个术语:a
并且b
,在默认的停用词标记过滤器将转换为单个术语之后b
.请参阅此剧本,以获取显示文本分析方式的小示例.
为了按照您指定的方式分析,我们必须配置我们的分析器:
"analyzer": {
"my_id_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filters": ["lowercase"]
}
}
Run Code Online (Sandbox Code Playgroud)
Byt因为Logstash通常在需要时创建新索引,所以我们必须确保在创建时所有索引都可以使用此分析器.有两种方法可以实现这一点:1)将其添加到Elasticsearch实例配置(elasticsearch.yml),或2)创建包含分析器的索引模板.
因为我们只需要在特定索引上使用此分析器(即具有前缀的索引logstash-
).通过使用索引模板API,我们可以执行以下操作:
curl localhost:9200/_template/logstash-id -XPUT -d '{
"template": "logstash-*",
"settings" : {
"analysis": {
"analyzer": {
"my_id_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filters": ["lowercase"]
}
}
}
},
"mappings": {
"_default_": {
"properties" : {
"id" : { "type" : "string", "analyzer" : "my_id_analyzer" }
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
执行上述命令后,此模板将应用于logstash-
之后创建的前缀的任何索引,唯一的"魔术"部分是添加的映射定义,它使用内置类型_default_
,它是"任何"类型的占位符在给定的索引中.这意味着映射将添加到任何类型,而不管其实际类型名称.
归档时间: |
|
查看次数: |
5390 次 |
最近记录: |