如果我們在將文檔插入到elasticsearch時未指定Id,則會自動生成Id。我也明白,Ids是片狀Ids,它具有預測模式。ElasticSearch是否自動生成ID順序?
我的問題是這些生成的Flake ID的順序是否足夠,我可以在_id或_uid上執行排序,並確保結果與插入的順序相同?
如果我們在將文檔插入到elasticsearch時未指定Id,則會自動生成Id。我也明白,Ids是片狀Ids,它具有預測模式。ElasticSearch是否自動生成ID順序?
我的問題是這些生成的Flake ID的順序是否足夠,我可以在_id或_uid上執行排序,並確保結果與插入的順序相同?
Elasticsearch自動生成_id是隨機的,不是順序的,_uid是相同的情況。如果您想按順序排序,那麼簡單的步驟是啓用_timestamp,這樣_timestamp將有時間插入文檔。
但是,更新文檔時會更新_timestamp。因此,您可能需要手動創建提供當前時間的新日期字段。
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-timestamp-field.html
自動生成_id
是不連續的。它是使用修改的FlakeID
算法生成的URL安全的,Base64編碼的GUID。 FlakeID是一種分散算法,可生成k-排序的唯一ID。
請注意,Elasticsearch不再使用隨機UUID生成_id
。
詳情參見:
即使我曾與毫秒一個單獨的時間戳字段,有機會的話,我可以有多個文檔具有相同的時間戳。在這種情況下,我需要更細粒度的級別對文檔進行排序。 –
如果是這樣的話,你必須先自己知道哪一個是先寫的。 – progrrammer