有没有什么方法可以搜索2个类似于内连接的索引?

时间:2015-04-09 08:33:07

标签: nest elasticsearch

我不知道如果不将我的数据重组为父/子关系,这是否可行,但我有2个Elasticsearch索引,一个包含主数据,另一个包含与该数据中的项有关的边界立方体信息。 / p>

两个集合中的项都有匹配的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字段进行链接),以便仅返回属于给定空间的数据。

感激地收到任何指导。

1 个答案:

答案 0 :(得分:0)

要走的路是父子关系。如果联接仅适用于ID并且您的来源已存储,则可以使用terms filter lookup

对于像查询这样的正确连接,unresolved PR就在那里。但我不确定何时会发布/修复它。