【发布时间】:2014-05-12 20:00:44
【问题描述】:
我在 ES 数据库中有一堆公司数据。我希望统计每家公司出现的文档数量,但aggregation 查询存在一些问题。我希望排除诸如“公司”或“公司”之类的术语。到目前为止,我已经能够按照下面的代码一次成功地完成一个学期。
{
"aggs" : {
"companies" : {
"terms" : {
"field" : "Companies.name",
"exclude" : "corporation"
}
}
}
}
返回
"aggregations": {
"assignee": {
"buckets": [
{
"key": "inc",
"doc_count": 375
},
{
"key": "company",
"doc_count": 252
}
]
}
}
理想情况下,我希望能够做类似的事情
{
"aggs" : {
"companies" : {
"terms" : {
"field" : "Companies.name",
"exclude" : ["corporation", "inc.", "inc", "co", "company", "the", "industries", "incorporated", "international"],
}
}
}
}
但我一直没能找到一种不会引发错误的方法
我查看了 ES 文档中聚合的“术语”部分,只能找到单个排除的示例。我想知道是否可以排除多个术语,如果可以,正确的语法是什么所以。
注意:我知道我可以将该字段设置为“not_analyzed”并获取完整公司名称的分组,而不是拆分名称。但是,我犹豫要不要这样做,因为分析允许存储桶更容忍名称变化(即 Microsoft Corp 和 Microsoft Corporation)
【问题讨论】:
-
仅供参考,这已从 ES 1.5 开始实施。有关更多信息,请参阅此问题:github.com/elastic/elasticsearch/issues/11959
标签: elasticsearch filter elasticsearch-aggregation