如果我们在将文档插入到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