有没有一种方法可以使用一些公共字段查询多个索引中的所有相关文档?

acruukt9  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(0)|浏览(194)

我有一个下面的场景:我正在创建一个名为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+ 版本

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题