簡體   English   中英

如何將紀元納秒值索引為 Elasticsearch 中的日期或 date_nano?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM