我在Elasticsearch中有20,000,000个订单项,我很乐意搜索(它的工作效果非常好)。
虽然我不知道如何解决,但还有一个额外的维度:
用户可以“购买”这些商品(批量为1,000到100,000),我需要搜索才能返回之前没有“购买”的商品。我在SQL中使用LEFT JOIN来解决这个问题。
我可以为每个项目添加一个buyBy []字段,但是每次用户购买时我都需要更新大量文档。感觉有点不对劲?
答案 0 :(得分:4)
Elasticsearch使用支持blockjoin的Lucene。在Elasticsearch中Parent-Child Relationships。它为您提供了一个连接,但它也带有限制(不再可能在节点之间任意分发文档,在某些情况下内存需求可能会爆炸)。
Elasticsearch文档为您提供a nice overview of the relationship modelling options。
如果您需要深度联接,更复杂的关系等,您可以考虑查看SIREn plugin。
(免责声明:我目前在开发SIREn的公司工作)