elasticsearch,Performance,Hash,elasticsearch" /> elasticsearch,Performance,Hash,elasticsearch" />

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

Performance Elasticsearch-许多小文档与较少的大文档?,performance,hash,elasticsearch,Performance,Hash,elasticsearch,我正在为我的公司内部使用的编目系统创建一个按图像搜索系统(类似于谷歌的反向图像搜索)。。我们已经成功地将Elasticsearch用于常规搜索功能,因此我计划对所有图像进行散列,为它们创建单独的索引,并使用它进行搜索。系统中有许多项目,每个项目可能有多个与其关联的图像,应该能够通过反向图像搜索其任何相关图像来找到该项目 我们考虑了两种可能的模式: 为每个图像制作一个文档,只包含图像的哈希值和与之相关的项目id。这将导致大约700万个文档,但它们会很小,因为它们只包含一个散列和一个ID 为每个项目

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

我们考虑了两种可能的模式:

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

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

这些模式中哪一个更有效

参加了亚历山大·雷尔森(Alexander Reelsen)最近的一次演讲后,他可能会说“视情况而定”和“基准测试”

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

  • 图像是否经常更新?这可能是一个负成本因素
  • OTOH,700万个文档的开销可能不应该被忽略,而在第二种情况下,它们只是
    字段中的
    术语

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

    还取决于文档上的关联图像是否可以更新?这可能代价高昂(毕竟更新是一个删除和索引操作))