ElastAlert2对接OpenSearch2.8出现@timestamp映射缺失错误求助
「No mapping found for [@timestamp] in order to sort on」错误排查方案
1. 时间字段配置不匹配
ElastAlert2默认依赖@timestamp字段做排序,但你的OpenSearch索引里的时间字段可能不是这个名称,或者规则里没指定正确的时间字段:
- 检查规则文件中的
timestamp_field配置,要是syslog数据用的是其他时间字段(比如timestamp),得显式指定:timestamp_field: "timestamp" - 执行
curl -XGET http://<opensearch地址>:<端口>/syslog-20221104/_mapping查看索引mapping,确认目标时间字段存在且是date类型。
2. 索引模式匹配错误
如果规则里用的是syslog-*这类索引模式而非具体的syslog-20221104,ElastAlert2可能查询到了没有@timestamp字段的其他索引,触发报错:
- 测试时直接指定目标索引:
elastalert-test-rule --index syslog-20221104 Loopdetect.yaml - 检查主配置文件或规则文件中的
index字段,确认指向的索引/模式只包含有正确时间字段的索引。
3. 版本兼容性问题
OpenSearch 2.8和ElastAlert2的版本可能存在兼容性差异,导致字段处理逻辑冲突:
- 确认你使用的ElastAlert2版本支持OpenSearch 2.8,建议升级到最新稳定版,或者核对官方文档的版本匹配说明。
4. 索引mapping类型错误
要是syslog-20221104是动态创建的,@timestamp可能被映射成了text类型,无法用于排序:
- 查看mapping里
@timestamp的类型,如果是text,要么重建索引并设置正确的date类型mapping,要么用reindex修改字段类型。
内容的提问来源于stack exchange,提问作者Анатолий Дорошенко
相关产品推荐
相关产品推荐

