2017-02-21 73 views
0

我想解决这里的一个问题,我甚至不确定它可以做到我希望如何完成。 基本上我需要在公司类型上查询我的索引。此类型具有名为Company_Name的字段。现在我有另外一种类型的Employee,它也有一个名为Company_Name的字段,它基本上将“与他联系”给公司。不同文档类型的聚合

我需要做的是在我的公司查询中进行汇总,从而得到公司内部员工的数量(针对每个结果)。

任何方式来做到这一点?

编辑:

映射:

"company" : { 
    "properties" : { 
    "company_name" : { 
     "type" : "text" 
    } 
    } 
}, 
"employee" : { 
    "properties" : { 
    "employee_name" : { 
     "type" : "text" 
    }, 
    "company_name" : { 
     "type" : "text" 
    } 
    } 
} 

回答

0

不知道如果我完全理解你想要什么,但你所提到的:

现在我有另一种类型是员工确实有一个名为Company_Name的域名

然后你你想要的援助,公司的员工数量。

因此,对于我来说,它看起来像所有你需要的是公司员工文档类型的聚合。

如果您确实需要查询两个索引,则可以将多索引搜索和聚合应用于多索引搜索的结果。

这或东西接近这个应该工作:

http://localhost:9200/$index/employee/_search?search_type=count 

{ 
    "aggs" : { 
    "company" : { 
    "terms" : { 
     "field" : "company_name" 
     } 
    } 
    } 
} 

人觉得你应该注意的是,如果你的领域COMPANY_NAME的分析将被符号化,你不能在该总额。您应该添加一个公司名称的原始字段用于汇总。

的一些有用参考:

https://www.elastic.co/guide/en/elasticsearch/guide/current/relations.html

https://www.elastic.co/guide/en/elasticsearch/guide/current/_closing_thoughts.html

+0

THX您的快速答复。为了澄清,这两种类型都在同一个索引中。但我理解的方式是聚合只是由顶级查询检索的数据的“子”。问题是,在我的顶级查询中,我只查询公司,而不是员工;这就是为什么我不知道如何对员工进行汇总。 –

+0

嗨,请发布你的映射,它会更容易给出正确的答案。 –

+0

嗨马科斯,我更新了映射的原始帖子。这真的是一个非常基本的关系,我唯一的问题是因为我只对公司过滤了我的初始查询。 –