原文如下: 索引过程调整和优化
自动生成 doc ID
如果外部指定了 id, ES 先尝试读取 doc 原来的版本号, 判断是否需要更新, 涉及一次磁盘的读取, 通过自动生成可以避免这个环节
我的疑问是:
那么如果不指定 id 的话, 在 es 插入索引后, 将返回给我们的 ID, update 到相应的数据库表中
如果不这么那么下次 update/delete 索引是无法操作的, 因为 update/delete 都是通过 id 来进行的
大家有没有好的方法呢? 不想加这个字段到表中
自动生成 doc ID
如果外部指定了 id, ES 先尝试读取 doc 原来的版本号, 判断是否需要更新, 涉及一次磁盘的读取, 通过自动生成可以避免这个环节
我的疑问是:
那么如果不指定 id 的话, 在 es 插入索引后, 将返回给我们的 ID, update 到相应的数据库表中
如果不这么那么下次 update/delete 索引是无法操作的, 因为 update/delete 都是通过 id 来进行的
大家有没有好的方法呢? 不想加这个字段到表中
4 个回复
rochy - rochy_he
赞同来自:
Ombres
赞同来自:
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自:
如果使用了自动生成id,每次导入数据的时候都要进行id的检查。这里是有性能消耗的。
但是使用随机生成id,就不需要这一步。
所以推荐使用,随机生成的ID,系统自带的。
Use auto-generated ids
When indexing a document that has an explicit id, Elasticsearch needs to check whether a document with the same id already exists within the same shard, which is a costly operation and gets even more costly as the index grows. By using auto-generated ids, Elasticsearch can skip this check, which makes indexing faster.
zqc0512 - andy zhou
赞同来自: