ES内两个索引联表查询关联字段商户ID
在Elasticsearch中,可以使用多种方法进行索引联表查询。以下是两种常见的方法:
-
使用嵌套对象: 在一个索引中,可以使用嵌套对象来表示关联关系。假设有两个索引,一个是商户索引,另一个是订单索引。商户索引中的每个文档包含一个唯一的商户ID,而订单索引中的每个文档包含一个商户ID字段,用于与商户索引进行关联。可以使用嵌套对象将订单索引中的商户ID字段与商户索引中的文档进行关联。
以下是一个示例请求:
GET 商户索引/商户类型/_search { "query": { "nested": { "path": "订单索引", "query": { "match": { "订单索引.商户ID": "商户索引.商户ID" } } } } }以上查询将返回与商户索引中的商户ID关联的所有订单。
-
使用父子关系: 另一种方法是使用父子关系来表示关联关系。在这种模型中,商户索引可以被定义为父索引,订单索引可以被定义为子索引。商户索引中的每个文档可以作为父文档,而订单索引中的每个文档可以作为子文档,并且子文档可以通过指定父文档的ID来与父文档进行关联。
以下是一个示例请求:
GET 订单索引/订单类型/_search { "query": { "has_parent": { "parent_type": "商户类型", "query": { "match": { "商户ID": "父文档的ID" } } } } }以上查询将返回与指定商户ID关联的所有订单。
无论使用哪种方法,都需要在索引设计时考虑到关联关系,并在查询时正确使用关联字段
原文地址: https://www.cveoy.top/t/topic/h31d 著作权归作者所有。请勿转载和采集!