[英]How to index an epoch nanoseconds value as a date or date_nano in Elasticsearch?
我們的系統將其值存儲在 Epoch 納秒時間戳中,即"created_at": 1629469976984334600
,這些值在 Elasticsearch 索引中原樣導入。
當字段映射到新索引時,我得到了意想不到的結果:
映射為"type": "date_nanos"
→ 原來的 integer 數字(?)
映射為"type": "date"
→ 51,213,565-ish 年的日期,例如+51213565-09-01T05:06:38.320Z
是否有一些映射語法告訴 ES 將納秒數視為正確的日期,即使結果是毫秒或秒精度?
您是否嘗試過簡單地將納秒精度添加到映射本身,就像這樣 -
PUT new_index
{
"mappings": {
"properties": {
"new_date_field": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"
}
}
}
}
請參考elastic 內置的日期格式
經過太多的挖掘,失敗的賞金和更多的挖掘,我找到了一種方法。
在_reindex
中,您可以使用script
來操作數據,如下所示:
POST _reindex
{
"source": {
"index": "mydocs"
},
"dest": {
"index": "mydocs_mapped"
},
"script": {
"lang": "painless",
"inline": "ctx._source.created_at = (long)ctx._source.created_at / 1000000;"
}
}
這會將字段轉換為紀元毫秒和 Elasticsearch,Kibana 可以將其用作日期。
我差點哭了。
PS:官方文檔在這里https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docs-reindex.html#reindex-scripts
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.