美文网首页
12、分布式文档系统_document id的手动指定与自动生成

12、分布式文档系统_document id的手动指定与自动生成

作者: 拉提娜的爸爸 | 来源:发表于2019-12-29 16:37 被阅读0次

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原因

相关文章

网友评论

      本文标题:12、分布式文档系统_document id的手动指定与自动生成

      本文链接:https://www.haomeiwen.com/subject/sknyoctx.html