Elasticsearch使用什么格式的ID?

时间:2015-09-02 19:18:08

标签: .net elasticsearch

系统生成的弹性搜索ID如下所示。

"_id": "AU9HiR3lEVul15o3bNYl"

那是什么格式?也有人知道像这样生成ID的库吗?

2 个答案:

答案 0 :(得分:4)

在v1.4.0之前,elasticsearch正在使用基于UUID的ID。这些ID是由RFC4122定义的与版本4.0兼容的UUID的Base64编码版本。为了对id进行编码,使用了URL安全的Base64编码(参见RFC3548的第4节),并删除了最后两个“=”符号(因为16字节的Base64编码总是生成两个“=”at结束)。

不幸的是,performance perspective完全随机的ID不太理想。因此,从版本1.4.0开始,elasticsearch切换到基于时间的ID。新的id格式本质上是flake ids的一个版本,除了它为时间戳使用6(不是8)字节而对序列号使用3(不是2)字节。

问题AU9HiR3lEVul15o3bNYl中的ID看起来像是在2015年8月中旬生成的时基ID。

答案 1 :(得分:1)

自动生成的ID长度为22个字符,URL安全,Base64编码的字符串通用唯一标识符或UUID,但看起来您的ID为20个字符。

我认为这里有更多的.NET信息,看起来像Guid.NewGuid会起作用。 What is the string length of a GUID?