有什么方法可以搜索类似于内部连接的 2 个索引?
Any way to search across 2 indices similar to an inner join?
我不知道如果不将我的数据重组为 parent/child 关系是否可行,但我有 2 个 Elasticsearch 索引,一个包含主要数据,另一个包含与项目相关的边界长方体信息那个数据。
两个集合中的项目都有匹配的 ID,因此如果它存储在 SQL 数据库中,使用内部联接在两个表中查找详细信息将是一件简单的事情。
有谁知道如何在 Elasticsearch 中做类似的事情?我调查了各种想法并搜索了类似的问题,但无济于事。
此搜索演示了提取我想要交叉引用的相关边界长方体记录...
var boundingSearch = client.Search<Cuboid>(bc => bc.Index(index + "_bounding_cuboids")
.Type("Cuboid")
.Query(
q =>
(q.Range(r => r.OnField(c => c.MinX).GreaterOrEquals(_minPoint.X).LowerOrEquals(_maxPoint.X)) ||
q.Range(r => r.OnField(c => c.MaxX).GreaterOrEquals(_minPoint.X).LowerOrEquals(_maxPoint.X))) &&
(q.Range(r => r.OnField(c => c.MinY).GreaterOrEquals(_minPoint.Y).LowerOrEquals(_maxPoint.Y)) ||
q.Range(r => r.OnField(c => c.MaxY).GreaterOrEquals(_minPoint.Y).LowerOrEquals(_maxPoint.Y))) &&
(q.Range(r => r.OnField(c => c.MinZ).GreaterOrEquals(_minPoint.Z).LowerOrEquals(_maxPoint.Z)) ||
q.Range(r => r.OnField(c => c.MaxZ).GreaterOrEquals(_minPoint.Z).LowerOrEquals(_maxPoint.Z))))
.Size(1000));
目前主要的资料都是使用简单的搜索...
search.QueryString(queryText);
我想做的是使边界搜索与此搜索一起成为 运行 过滤器(使用其 Id 字段进行链接),以便仅 return 落入的数据在给定的 space.
内
非常感谢收到任何指导。
要走的路是亲子关系。如果连接仅用于 ID 并且您的源已存储,则可以使用 terms filter lookup.
至于像查询这样的正确连接,unresolved PR 就在那里。但我不确定什么时候会 released/fixed.
我不知道如果不将我的数据重组为 parent/child 关系是否可行,但我有 2 个 Elasticsearch 索引,一个包含主要数据,另一个包含与项目相关的边界长方体信息那个数据。
两个集合中的项目都有匹配的 ID,因此如果它存储在 SQL 数据库中,使用内部联接在两个表中查找详细信息将是一件简单的事情。
有谁知道如何在 Elasticsearch 中做类似的事情?我调查了各种想法并搜索了类似的问题,但无济于事。
此搜索演示了提取我想要交叉引用的相关边界长方体记录...
var boundingSearch = client.Search<Cuboid>(bc => bc.Index(index + "_bounding_cuboids")
.Type("Cuboid")
.Query(
q =>
(q.Range(r => r.OnField(c => c.MinX).GreaterOrEquals(_minPoint.X).LowerOrEquals(_maxPoint.X)) ||
q.Range(r => r.OnField(c => c.MaxX).GreaterOrEquals(_minPoint.X).LowerOrEquals(_maxPoint.X))) &&
(q.Range(r => r.OnField(c => c.MinY).GreaterOrEquals(_minPoint.Y).LowerOrEquals(_maxPoint.Y)) ||
q.Range(r => r.OnField(c => c.MaxY).GreaterOrEquals(_minPoint.Y).LowerOrEquals(_maxPoint.Y))) &&
(q.Range(r => r.OnField(c => c.MinZ).GreaterOrEquals(_minPoint.Z).LowerOrEquals(_maxPoint.Z)) ||
q.Range(r => r.OnField(c => c.MaxZ).GreaterOrEquals(_minPoint.Z).LowerOrEquals(_maxPoint.Z))))
.Size(1000));
目前主要的资料都是使用简单的搜索...
search.QueryString(queryText);
我想做的是使边界搜索与此搜索一起成为 运行 过滤器(使用其 Id 字段进行链接),以便仅 return 落入的数据在给定的 space.
内非常感谢收到任何指导。
要走的路是亲子关系。如果连接仅用于 ID 并且您的源已存储,则可以使用 terms filter lookup.
至于像查询这样的正确连接,unresolved PR 就在那里。但我不确定什么时候会 released/fixed.