1、手动指定document id
(1)根据应用情况来说,是否满足手动指定document id的前提:
一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。
举例:如果我们现在正在开发一个系统网站之类的,要给系统做一个搜索功能,这个时候系统会首先从系统内部的数据库中获取数据,而这个数据在数据库中肯定会有primary key(主键),如果将这些数据导入es中,此时就比较适合使用手动指定document id的方式,id指定为数据库中数据对应的primary key。
如果我们做的系统数据主要存储方式就是es一种,也就是说数据产生出来后,没有id,直接就放在es中存储,这个时候,就不适合用手动指定document id的方式了。在不知道数据id是什么的情况下,可以采取让es自动生成id的方式
(2)手动指定document id 的示例
PUT /test_index/test_type/2
{
"test_content":"my test_content"
}
--------------------------------------结果-----------------------------------------------------
{
"_index": "test_index",
"_type": "test_type",
"_id": "2",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
2、自动生成document id
(1)自动生成document id示例
POST /test_index/test_type
{
"test_content":"my test_content automatic"
}
--------------------------------------结果-----------------------------------------------------
{
"_index": "test_index",
"_type": "test_type",
"_id": "AW9QyvfMvHutHJSW2Hir",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
(2)自动生成的id,长度为20个字符,URL安全,base64编码,采用GUID的生成方式,保证分布式系统并行生成时不可能会发生id冲突。
GUID生成id原因
网友评论