Elasticsearch - 相当于LEFT JOIN

时间:2015-07-09 22:14:10

标签: elasticsearch

我在Elasticsearch中有20,000,000个订单项,我很乐意搜索(它的工作效果非常好)。

虽然我不知道如何解决,但还有一个额外的维度:

用户可以“购买”这些商品(批量为1,000到100,000),我需要搜索才能返回之前没有“购买”的商品。我在SQL中使用LEFT JOIN来解决这个问题。

我可以为每个项目添加一个buyBy []字段,但是每次用户购买时我都需要更新大量文档。感觉有点不对劲?

1 个答案:

答案 0 :(得分:4)

Elasticsearch使用支持blockjoin的Lucene。在Elasticsearch中Parent-Child Relationships。它为您提供了一个连接,但它也带有限制(不再可能在节点之间任意分发文档,在某些情况下内存需求可能会爆炸)。

Elasticsearch文档为您提供a nice overview of the relationship modelling options

如果您需要深度联接,更复杂的关系等,您可以考虑查看SIREn plugin

(免责声明:我目前在开发SIREn的公司工作)