弹性搜索 - 根据外部因素更改相关性

时间:2015-12-03 15:16:39

标签: elasticsearch relevance

我的用例有点复杂,所以我通过使用产品和购买来简化它:

应用程序有一个包含各种表的大型数据库,其中包括产品和购买(多对多:user_id:product_id)。 Elastic只有产品的索引,因为这是唯一需要进行高级/高级搜索的实体。

我想要实现的目标如下: 当前用户购买产品的次数越多,我希望它就越相关。

棘手的部分是Elastic只有产品的索引,而不是购买。 我可以在数据库中执行查询并获取用户购买产品的次数信息,并将结果传递给Elastic,问题是如何操作。

感谢。

1 个答案:

答案 0 :(得分:2)

如果您可以为每位搜索者生成合理限制的购买历史记录,则可以使用可选shouldbool query

列表在term queries内实现此目标

E.g。

"bool": {
  "must": [ <existing query logic> ],
  "should": [
    {
       "term": { "product_id": 654321 },
       "boost": 3 <e.g. Purchased 3 times>
    },
    {
       ...
    }
  ]
}

作为一个单挑,评估大量这些可选的布尔子句会降低您的查询性能,因此您也可以考虑使用rescore request将提升逻辑仅应用于前100个未提升搜索点击,如果这将满足您的要求。