我有2个索引。一个包含一些关于产品的数据。这个索引已经存在,并正在多个地方使用。我想创建一个关于用户的愿望清单,可以包含多个产品的新索引。每个用户可以包含多个愿望清单。我想获取所有产品,给定用户ID和愿望清单名称。
- 我被允许以任何我希望的方式构建WISHLIST索引,但不能在Product索引中发生重大更改。
- 如果解决方案允许分页,那就更好了。
INDEX PRODUCT
[{
productid: 123,
name: abc,
available: true
},{
productid: 456,
name: abcder,
available: false
} ]
INDEX USER_WISHLIST
[{
userid: 1,
wishlist_name: xyz,
product_ids: [123, 456]
},
{userid: 2,
wishlist_name: pqr,
product_ids: [123]
},
{userid: 1,
wishlist_name: yyy,
product_ids: [456]
}
字符串
1条答案
按热度按时间oipij1gg1#
Elasticsearch不支持索引之间的传统SQL连接。
然而,Elasticsearch提供了一个enrich处理器,可以用来将现有索引中的数据添加到新索引中。这可以用作一种解决方案来实现类似的结果。
这里有一个例子:
1.首先,创建一个丰富策略,定义要丰富的索引、要匹配的字段以及要包含在丰富数据中的字段:
字符串
1.然后,执行策略:
型
1.接下来,创建一个管道,它使用丰富处理器在文档被索引到USER_WISHLIST索引时丰富文档:
型
1.现在,当您将文档索引到USER_WISHLIST索引中时,请使用管道:
型
USER_WISHLIST索引中的结果文档将具有一个附加字段“product_details”,该字段包含“product_ids”字段中每个产品id的产品名称和可用性。
以下是官方的Elasticsearch丰富示例:https://www.elastic.co/guide/en/elasticsearch/reference/current/match-enrich-policy-type.html