单个索引内两个弹性类型之间的内部连接操作

Inner Join operations between two Elastic Types inside a single Index

我在弹性索引中有两种类型,例如 Employees 和 Cities,

Employees 类型的文档结构类似于

[{
    "_index": "zase",
    "_type": "Employees",
    "_id": "100",
    "_score": 1,
    "_source": {
        "sid": 100,
        "name": "San Andreas",
        "stageid": 0
    }
},
{
    "_index": "zase",
    "_type": "Employees",
    "_id": "101",
    "_score": 1,
    "_source": {
        "sid": 101,
        "name": "Zack",
        "stageid": 0
    }
}]

类型城市的文档结构如下,

[{
    "_index": "zase",
    "_type": "Cities",
    "_id": "1",
    "_score": 1,
    "_source": {
        "sid": 1,
        "name": "Virginia",
        "EmployeesID": [
            0:100,
            1:125,
            2:143
        ]
    }
},
{
    "_index": "zase",
    "_type": "Cities",
    "_id": "2",
    "_score": 1,
    "_source": {
        "sid": 2,
        "name": "New Field",
        "EmployeesID": [
            0: 110
        ]
    }
}]  

当使用城市名称 'Virginia' 查询弹性搜索时,我需要获取员工信息,其中 Cities.EmployeesID == Employees.sid,

在Elastic Search 中,跨不同类型的RDBMS Join 操作是否可行? 任何帮助将不胜感激。

JOIN 查询在 ES 中尚不支持,虽然有一个 issue that is being discussed and a pull request 试图提供该功能,但工作目前因一些冲突而停滞不前。

同时,对于您的简单用例,您可以使用 elasticsearch-sql 插件来实现您想要的。

如果这是您数据检索的主要用例,您也可以考虑使用 parent-child 关系。