美文网首页
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