有什么方法可以搜索类似于内部连接的 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.