千家信息网

Elasticsearch document id 生成方式是什么

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,本篇文章为大家展示了Elasticsearch document id 生成方式是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。手动指定根据应用情况来说,
千家信息网最后更新 2024年11月29日Elasticsearch document id 生成方式是什么

本篇文章为大家展示了Elasticsearch document id 生成方式是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

手动指定

根据应用情况来说,是否满足手动指定 document id 的前提:

一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。举个例子,比如说,我们现在在开发一个电商网站,做搜索功能,或者是OA系统,做员工检索功能。这个时候,数据首先会在网站系统或者IT系统内部的数据库中,会先有一份,此时就肯定会有一个数据库的primary key(自增长,UUID,或者是业务编号)。如果将数据导入到 Elasticsearch 中,此时就比较适合采用数据在数据库中已有的primary key。

如果说,我们是在做一个系统,这个系统主要的数据存储就是 Elasticsearch 一种,也就是说,数据产生出来以后,可能就没有id,直接就放es一个存储,那么这个时候,可能就不太适合说手动指定document id的形式了,因为你也不知道id应该是什么,此时可以采取下面要讲解的让 Elasticsearch 自动生成id的方式。

# put /index/type/idPUT /test_index/test_type/2{  "test_content": "my test"}{  "_index" : "test_index",  "_type" : "test_type",  "_id" : "2",  "_version" : 1,  "result" : "created",  "_shards" : {    "total" : 2,    "successful" : 2,    "failed" : 0  },  "_seq_no" : 0,  "_primary_term" : 1}

自动生成

# post /index/typePUT test_index/test_type{  "test_content": "my test automated document id"}{  "error" : "Incorrect HTTP method for uri [/test_index/test_type?pretty=true] and method [PUT], allowed: [POST]",  "status" : 405}POST /test_index/test_type{  "test_content": "my test"}{  "_index" : "test_index",  "_type" : "test_type",  "_id" : "A7Ma5XYB_s8SuYmy2Xg0",  "_version" : 1,  "result" : "created",  "_shards" : {    "total" : 2,    "successful" : 2,    "failed" : 0  },  "_seq_no" : 1,  "_primary_term" : 1}# post /index/typePUT test_index/test_type{  "test_content": "my test automated document id"}{  "error" : "Incorrect HTTP method for uri [/test_index/test_type?pretty=true] and method [PUT], allowed: [POST]",  "status" : 405}POST /test_index/test_type{  "test_content": "my test"}{  "_index" : "test_index",  "_type" : "test_type",  "_id" : "A7Ma5XYB_s8SuYmy2Xg0",  "_version" : 1,  "result" : "created",  "_shards" : {    "total" : 2,    "successful" : 2,    "failed" : 0  },  "_seq_no" : 1,  "_primary_term" : 1}

有可能两个创建 Document 的请求是完全在同一时间执行的(小概率事件),只不过在不同的 Elastic 节点上,那么,如果 _id 自动生成的算法不够好的话,有没有可能出现两个节点,给两个不同的 Document 创建了相同的 _id ?

当然是不可能的。

GUID 算法可以保证在分布式的环境下,不同节点同一时间创建的 _id 一定是不冲突的(即使是同一个节点,也不会有任何的问题)。

Elasticsearch 自动生成 _id 的机制,可以保证不会出现两个不同的 Document 的 _id 是一样的。

注意,自动生成 ID 的时候,使用的是 POST 而不是 PUT;手动生成 ID 的时候使用 PUT 或者 POST 都可以。

另外,这一节的实际操作,我是在 cloud.elastic.co 提供的虚拟机上进行的。其实在准备认证期间,我觉得可以考虑购买两个月左右的服务;也可以考虑在阿里云上购买。

自动生成的id,长度为20个字符,URL安全,base64编码,GUID,分布式系统并行生成时不可能会发生冲突。

上述内容就是Elasticsearch document id 生成方式是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

生成 数据 系统 自动生成 两个 方式 不同 手动 时候 节点 就是 数据库 内容 分布式 功能 技能 时间 是在 知识 算法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 西藏网络安全保护主题 在沈阳找软件开发工作好找不 计算机和服务器管理试题 宁波云玺网络技术有限公司 苏州软件开发吧 广州番禺软件开发有限公司 苹果音乐服务器停止响应 电信网络安全业绩总结报告 网络安全中心管理规定 杨浦区软件开发诚信经营 华为服务器硬件重启是哪个按键 离线模式能玩的rpg服务器 网络安全有什么兼职 网络技术的区别 杭州安卓软件开发收费多少 致互联网科技媒体同行 爱快可以当打印机服务器吗 文山自由互联网科技 好看的网络安全手抄报简笔画大全 数据库测试代码详解 对网络安全检查的认识和做法 广州番禺软件开发有限公司 用户查看订单数据库 郑州软件开发app要多少钱 服务器支持的最大内存 数据库增加数值 数据库中什么是数据共享性 青岛港慧鼎移动服务器 dns 服务器常见错误 网络安全对国家的重要性政治角度
0