Elasticsearch - 许多小文档与较少的大型文档?

时间:2015-05-14 07:43:35

标签: performance hash elasticsearch

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

我们想到了两种可能的架构:

为每个图像制作文档,仅包含图像的哈希值和与之相关的项目ID。这将导致大约约7百万个文档,但它们会很小,因为它们只包含一个哈希和一个ID。

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

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

1 个答案:

答案 0 :(得分:0)

参加了Alexander Reelsen最近的Under the Hood演讲,他可能会说"它取决于"并且"对它进行基准测试"。

正如@Science_Fiction已暗示:

  1. 是经常更新的图片吗?这可能是一个负成本因素
  2. OTOH,7m文档的开销可能不应该被忽略,而在第二种情况下,它们只是not_analyzed字段中的术语。
  3. 如果1.是低因素,我可能会先从你的第二种方法开始。