我有一个返回一组文档(100)的查询。我想对这些应用一个聚合,因为这些是最相关的。当我尝试聚合时,它返回所有结果的聚合,而不是前100个结果的聚合。
{
"size": 100,
"sort": [
{
"_score": {
"order": "desc"
}
}
],
"from": 0,
"query": {
.......
},
"aggregations": {
"category.category_id": {
"nested": {
"path": "category"
},
"aggregations": {
"category.category_id": {
"terms": {
"field": "category.category_id",
"size": 2,
"order": {
"_count": "desc"
}
}
}
}
}
}
{
"took": 33,
"timed_out": false,
"_shards": {
"total": 4,
"successful": 4,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1042,
"max_score": 60,
"hits": [...100 hits...]
},
"aggregations": {
"category.category_id": {
"doc_count": 5186,
"category.category_id": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 196,
"buckets": [
{
"key": 2,
"doc_count": 1042
},
{
"key": 2764,
"doc_count": 272
}
....
]
}
}
}
{
"took": 33,
"timed_out": false,
"_shards": {
"total": 4,
"successful": 4,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1042,
"max_score": 60,
"hits": [...100 hits...]
},
"aggregations": {
"category.category_id": {
"doc_count": 100,
"category.category_id": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": x,
"buckets": [
{
"key": 2,
"doc_count": x (x< 100) (eg 37)
},
{
"key": 2764,
"doc_count": y (y <= 100 -x) (eg 10)
}
....
]
}
}
}
您可以使用elasticsearch文档中描述的筛选器聚合
{
"aggs" : {
"agg_name" : {
"filter" : { //Add your query },
"aggs" : {
"terms": {
"field": "category.category_id",
"size": 2,
"order": {
"_count": "desc"
}
}
}
}
}
如果需要,可以在第二个aggs中再添加一个聚合
问题内容: 我正在尝试对数组中的值进行聚合,并且还过滤由前缀返回的存储桶。不知道这是否可行,或者我滥用过滤桶。 3份文件: 目的是获取带有字母B开头颜色的文档数量: 不幸的是,返回的结果包括Red。显然是因为带有红色的文档仍然按过滤器匹配,因为它们也具有蓝色和/或黑色。 有没有一种方法可以只过滤存储桶结果? 问题答案: 尝试此操作,它将过滤为存储桶本身创建的值:
问题内容: 我对Elasticsearch世界真的很陌生。 比方说,我有两个字段嵌套聚集:与: 这段代码可以完美地工作,并且给我这样的东西: 现在,我需要排除所有小于1000的聚合结果,而改为: 是否可以在查询正文中设置此需求?还是我必须在调用者布局中执行过滤器(在我的情况下为javascript)? 提前致谢 问题答案: 下次,M’sieur Toph’:RTFM! 我真的很傻:问了30秒后,我
问题内容: 我要实现的目标:我不希望查询过滤器过滤“年龄”聚合,并且希望能够对其应用过滤器。 因此,如果我从以下查询开始: 我的聚合“ young_age”将同时被filter_1和filter_2过滤。我不希望我的汇总被filter_1过滤。 在查看文档时,我认为全局聚合可以解决我的问题,因此我编写了以下查询: 但是然后elasticsearch抱怨我的filter_2: “”“在[global
不知道如何表达这个问题。我正在使用Elasticsearch 2.2。 让我们从数据集的一个示例开始,该数据集由5个文档组成: 被调用的\u实体始终具有uuid。coverage\u实体可以为空,也可以具有uuid。 我使用脚本在任何一个被调用的\实体上进行聚合。uuid或coverage\u实体。uuid: 现在,聚合已经从任一头生成了术语。调用了\u实体。uuid或标头。coverage\u实
我有一个Elasticsearch文档索引,其中有一个包含URL列表的字段。如预期的那样,在该字段上聚合会给我唯一URL的计数。 然后,我想过滤掉其键不包含特定字符串的桶。我已经尝试使用Bucket选择器聚合来实现这一点。 此尝试: 失败原因: 名为[links\u key\u filter]且类型为[bucket\u selector]的管道聚合无效。顶层仅允许同级管道聚合 将bucket选择器
问题内容: 我刚开始使用ElasticSearch几天,而作为一项学习练习,我实施了一个基本的工作搜寻器,该工作收集器汇总了一些求职网站上的工作,并在其中填充了一些数据供我使用。 我的索引包含每个列出职位的网站的文档。每个文档的一个属性是一个“作业”数组,其中包含该站点上存在的每个作业的对象。我正在考虑将每个作业作为自己的文档建立索引(特别是因为ElasticSearch文档说inner_hits