【问题标题】:Elasticsearch - many small documents vs fewer large documents?Elasticsearch - 许多小文档与更少的大文档?
【发布时间】:2015-07-25 18:04:10
【问题描述】:

我正在为我公司内部使用的一个编目系统创建按图像搜索系统(类似于 Google 的反向图像搜索)。我们已经成功地使用 Elasticsearch 来实现我们的常规搜索功能,所以我计划散列我们所有的图像,为它们创建一个单独的索引,并使用它进行搜索。系统中有很多物品,每个物品可能有多个与之关联的图像,并且该物品应该能够通过反向图像搜索其任何相关图像来找到。

我们想到了两种可能的模式:

为每张图片制作一个文档,只包含图片的哈希值和与之相关的商品ID。这将产生大约 7m 个文档,但它们会很小,因为它们只包含一个哈希和一个 ID。

为每个项目创建一个文档,并将与之关联的所有图像的哈希值存储在文档上的一个数组中。这将产生大约 10 万个文档,但每个文档都会相当大,有些项目有数百个与之关联的图像。

这些架构中哪一个会更高效?

【问题讨论】:

  • 还取决于是否可以更新文档上的关联图像?这可能会很昂贵(更新毕竟是删除和索引操作))

标签: performance hash elasticsearch


【解决方案1】:

在参加了 Alexander Reelsen 最近的 Under the Hood 演讲后,他可能会说“这取决于”和“对其进行基准测试”。

正如@Science_Fiction 已经暗示的那样:

  1. 图像是否经常更新?这可能会带来负面的成本因素
  2. OTOH,7m 文档的开销可能不应该被忽略,而在您的第二种情况下,它们只是字段中的 not_analyzed 术语。

如果 1. 是一个低因素,我可能会先从您的第二种方法开始。

【讨论】:

    猜你喜欢
    • 2011-03-03
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多