我有一个下面的场景:我正在创建一个名为company的索引,在这里我正在创建一个多级关系
company
|
|---------------|
department supplier
|
employee
我创建了以下Map:
PUT /company
{
"mappings": {
"_doc":{
"properties":{
"join_field":{
"type":"join",
"relations":{
"company": ["supplier", "department"],
"department": "employee"
}
}
}
}
}
}
我可以使用父id(公司id)查询公司下的所有部门
GET /company/_doc/_search
{
"query":{
"parent_id":{
"type":"department",
"id":1
}
}
}
还可以查询公司部门下的所有员工
GET /company/_doc/_search?routing=1
{
"query":{
"has_parent":{
"parent_type":"department",
"query":{
"term":{
"name.keyword":"Development"
}
}
}
}
}
最后,我的问题是,如何在一个ElasticSearch查询中查询一个公司的所有部门和员工,而不是获取所有部门,并使用这些部门获取员工?
最终,我期待着像下面这样的事情
select * from company c, department d, supplier s, employee e where
c.c_id=d.c_id and d.c_id=s.c_id and s.c_id=e.c_id -- where c_id is company id
我对非连接类型答案的泛型方法建议也很满意注意:我正在使用 elastic search 7+
版本
暂无答案!
目前还没有任何答案,快来回答吧!