我试图索引使用纳秒epoch作为跨度计时的OpenTelemarket数据。我的索引Map中包含以下内容(通过GET /index/_mappings
验证:
"startTimeUnixNano": {
"type": "date_nanos"
},
字符串
但是,当使用此值索引文档时:
"startTimeUnixNano":1700860667233615872,
型
Elasticsearch抛出一个illegal_argument_exception
:
{
"error":{
"root_cause":[
{
"type":"document_parsing_exception",
"reason":"[1:1723] failed to parse field [resourceSpans.scopeSpans.spans.startTimeUnixNano] of type [date_nanos] in document with id 'OMxXDowB4M_uH230iKzE'. Preview of field's value: '1700860667233615872'"
}
],
"type":"document_parsing_exception",
"reason":"[1:1723] failed to parse field [resourceSpans.scopeSpans.spans.startTimeUnixNano] of type [date_nanos] in document with id 'OMxXDowB4M_uH230iKzE'. Preview of field's value: '1700860667233615872'",
"caused_by":{
"type":"illegal_argument_exception",
"reason":"date[+53900098-12-02T05:46:55.872Z] is after 2262-04-11T23:47:16.854775807 and cannot be stored in nanosecond resolution"
}
},
"status":400
}
型
它显然接受了这个巨大的时间戳值,其格式的精度低于纳秒,因为Elasticsearch评估的日期是很久以后的,但我已经将索引Map设置为date_nano
,所以我不知道为什么我不能给予它一个纳秒的历元。
我已经通过(JavaScript)确认了提供的纳秒时间戳在范围内:
new Date(1700860667233615872 / 1000000)
型
2023年11月24日
1条答案
按热度按时间cu6pst1q1#
您还需要像在JS代码中那样将发送到ES的值除以1000000,即发送此值将有效并具有正确的分辨率
字符串
这将解决
型