我应该将数据库ID用作弹性ID吗

时间:2018-10-08 22:31:20

标签: elasticsearch

我是Elastic的新手,开始将数据库表同步到Elastic Index中。我已经开始使用表ID(UUID)作为弹性ID,但是从长远来看,这在性能或灵活性方面是否是一个错误?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

好吧,在这两个响应之间,只要所使用的id足够独特以提供良好的弹性平衡,它似乎就可以正常工作。

答案 1 :(得分:0)

我认为这种方法实际上应该是最佳实践。当您从(已更改的)数据库中更新数据时,您可以直接 处理文档。

使用_bulk更新API对我们来说非常有用,该API需要每个商品都有明确的ID。

在数据库端的每次更改时,我们都会排队等待更改通知,更改后的对象将以JSON序列化并异步并以更大的批数发送给ES。 带来了巨大的性能差异。另一方面,搜索的性能并不取决于_id AFAIK的长度,即使您按_id进行查找也是如此。因此,您的数据库UUID应该很好。特别是由于_id可以是字母数字,因此它们不仅限于数字。

ES结果和您的记录系统之间通过_id具有1:1的关系(我想这就是您的数据库的目的)对于透明目的也是有利的。无论如何,您都希望将数据库ID存储为某个字段,并且至少要对其进行索引,以至少帮助您了解该文档的来源

因此,与其创建自己的ID字段,不如立即使用内置_id字段以及数据库提供的数据。