在Logstash中为新字段设置Elasticsearch Analyzer

通过使用GROK filter,我们可以向Logstash添加新字段。

但是,在这里,我想知道如何为该特定领域设置分析仪。

例如:,我有一个新的id字段,其字段类似于a_b,但Elasticsearch提供的常规分析器会将其分为ab。因此,我无法将术语功能有效地应用于该特定领域并使之有用。

在这里,对于ID字段,我想应用我自己的自定义分析器,该分析器不标记值,而是应用小写过滤器。

如何在logstash中完成此操作。

回答:

Elasticsearch中的默认分析器将使用Standard标记器对术语进行标记,这将标记a

b为两个术语:ab,在默认停用词标记过滤器之后,该过滤器将变为单个术语b。请参见此剧本,以一个小的示例说明如何分析文本。

为了按照您指定的方式进行分析,我们必须对分析器进行如下配置:

"analyzer": {

"my_id_analyzer": {

"type": "custom",

"tokenizer": "keyword",

"filters": ["lowercase"]

}

}

Byt因为Logstash通常在需要时创建新索引,所以我们必须确保在创建所有索引时都可以使用该分析器。有两种方法可以实现此目的:1)将其添加到Elasticsearch实例配置(elasticsearch.yml),或2)创建包含分析器的索引模板。

由于我们只需要针对特定​​索引(即具有前缀的索引)使用此分析器logstash-。通过使用Index模板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" }

}

}

}

}'

执行完上述命令后,此模板将应用于具有logstash-随后创建的前缀的任何索引,唯一的“魔术”部分是添加的映射定义,该映射定义使用内置类型_default_,该类型是“

any”类型的占位符在给定的索引中。这意味着映射将被添加到任何类型,而不管其实际的类型名称如何。

以上是 在Logstash中为新字段设置Elasticsearch Analyzer 的全部内容, 来源链接: utcz.com/qa/422717.html

回到顶部