【问题标题】:Elasticsearch: Search for similar productsElasticsearch:搜索类似产品
【发布时间】:2017-01-11 17:25:32
【问题描述】:

我有一个包含 5000 万种产品的列表。每个产品都有一个包含 200 项功能的列表。我希望通过匹配在 200 个功能中具有最大重叠的产品功能来找到类似的产品。

目前我将 200 个单词与空格连接并形成一个长字符串。当我想为特定的选定产品查找类似产品时,我会检索存储的 200 字长字符串并搜索 elasticsearch。

这给出了预期的结果,但每次搜索大约需要 7 秒。那是因为搜索短语太长了。有没有更好的方法来做到这一点并找到弹性的最佳重叠?

【问题讨论】:

    标签: elasticsearch elasticsearch-query


    【解决方案1】:

    我建议你检查/尝试几件事:

    我有一个包含 5000 万种产品的列表。每个产品都有200个列表 特征。我希望通过匹配产品来找到类似的产品 在 200 个特征中具有最大重叠的特征。目前 我将 200 个单词与空格连接起来,形成一个长字符串。

    假设 Product 是 Doc 类型,您可以尝试将其保存为值数组,并在其上保存 enabling field data。然后很容易使用aggregations 对它们进行分组,应用正确提到的最大重叠并得到你想要的。我坚信它会更快。

    我检索存储的 200 字长字符串并搜索弹性搜索。

    可能在某些情况下,您想要的只是聚合结果,而不是所有产品或其他文档类型的完整响应,在这种情况下,将搜索类型设置为 count(旧版本)或 query_then_fetch,大小为 0(新版本)和您可以避免对所有文档类型进行初始获取并仅获取聚合,这可以根据您的要求在某些情况下使用。

    确保您拥有elasticsearch environment proper prepared

    最后,有了这么多文档,您有机会找到比默认文档更适合您的情况的 shard /replicas configuration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多