Kee*_*ana 4 elasticsearch logstash
我是Elasticsearch的新手,刚刚开始使用ELK堆栈.我正在我的Logstash中收集键值类型日志并将其传递给Elasticsearch中的索引.我在Logstash中使用kv过滤器插件.因此,默认情况下,所有字段都是字符串类型.
当我尝试在Elasticsearch中的数字字段上执行avg或sum等聚合时,我得到一个异常: ClassCastException[org.elasticsearch.index.fielddata.plain.PagedBytesIndexFieldData cannot be cast to org.elasticsearch.index.fielddata.IndexNumericFieldData]
当我检查索引中的映射时,除时间戳之外的所有字段都标记为字符串.
请告诉我如何克服这个问题,因为我的日志事件中有许多数字字段用于聚合.
谢谢,
Keerthana
您可以为这些字段设置显式映射(例如,参见Elasticsearch中将字符串的默认映射更改为"未分析"以获得一些指导),但使用mutate过滤器将这些字段转换为Logstash中的整数更容易:
mutate {
convert => ["name-of-field", "integer"]
}
Run Code Online (Sandbox Code Playgroud)
然后Elasticsearch会更好地猜测您的字段的最佳数据类型.
(另请参阅使用logstash grok进行数据类型转换.)
在最新的Logstash中,语法如下
filter {
mutate {
convert => { "fieldname" => "integer" }
}
}
Run Code Online (Sandbox Code Playgroud)
您可以访问此链接了解更多详细信息:https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-convert
| 归档时间: |
|
| 查看次数: |
12997 次 |
| 最近记录: |