【发布时间】:2015-07-25 18:04:10
【问题描述】:
我正在为我公司内部使用的一个编目系统创建按图像搜索系统(类似于 Google 的反向图像搜索)。我们已经成功地使用 Elasticsearch 来实现我们的常规搜索功能,所以我计划散列我们所有的图像,为它们创建一个单独的索引,并使用它进行搜索。系统中有很多物品,每个物品可能有多个与之关联的图像,并且该物品应该能够通过反向图像搜索其任何相关图像来找到。
我们想到了两种可能的模式:
为每张图片制作一个文档,只包含图片的哈希值和与之相关的商品ID。这将产生大约 7m 个文档,但它们会很小,因为它们只包含一个哈希和一个 ID。
为每个项目创建一个文档,并将与之关联的所有图像的哈希值存储在文档上的一个数组中。这将产生大约 10 万个文档,但每个文档都会相当大,有些项目有数百个与之关联的图像。
这些架构中哪一个会更高效?
【问题讨论】:
-
还取决于是否可以更新文档上的关联图像?这可能会很昂贵(更新毕竟是删除和索引操作))
标签: performance hash elasticsearch