是否一定要使用系统自动生成的 _id ?这一部分不太明白

来源:3-11 从写入原理深入ES写优化(三)

404_

2023-02-01

实际业务中,特别是垂直搜索的业务场景中,文档的更新我们还是得依赖原文档的id来进行修改操作,如果每次修改我们都需要去查询原文档的id,查询操作对系统的压力可能会更大。

如果设置自定义id,我们还可以通过bulk的方式写入文档,性能比先根据文档id查询再写入要高几个数量级。所以对于垂直搜索业务,更建议使用业务主键来做ES的id。

这两段话没明白是什么意思?到底是用自动生成_id好,还是用自定义的id好?
文中 原文档的id 值什么?是自动生成的_id还是自定义的id

写回答

2回答

少林码僧

2023-02-01

对于有更新操作的场景,使用业务数据的唯一值来做ES的id,也就是自定义id的方式。对于没有更新操作的场景,使用ES自动生成id的方式。为什么有更新就需要使用自定义id的方式呢? 因为如果ES的doc id是自动生成的,你在更新数据的时候需要查出ES的doc id才能进行更新, 但如果是自定义id的方式,你就可以在更新数据之前,根据业务数据唯一值就能知道这条数据在ES的doc id 如果更新量级比较大,这种select 后 再 update的方式给集群带来的消耗是很大的。

1
0

404_

提问者

2023-02-01

这一部分我感觉没有讲清楚

0
0

海量数据高并发场景,构建Go+ES8企业级搜索微服务

全新 ES8 配合技术组件,实现高性能搜索

267 学习 · 54 问题

查看课程