【发布时间】:2017-09-28 02:52:15
【问题描述】:
我正在尝试在我的集群上运行一些统计信息。
有时我不可能检索到一个索引(或一种类型)范围内的所有文档,因为它的数据流量很大。所以我对我的查询设置了一些限制(比如:"size": 1000)。
结合聚合范围,我得到了命中范围内的 1000 个文档,以及索引中所有匹配文档的聚合结果。
这种行为是可以理解的,但由于我的统计数据的性质,我只想汇总实际检索到的文档。
我知道在查询范围内有一种称为“后过滤”的方法,它发生在聚合计算之后。
所以,我正在搜索的是一些“后聚合”,它发生在文档被检索到之后,因此聚合只会在那些被检索到的文档上为真。
这是一些查询示例:
{
"size": 1000,
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"make": "ford"
}
}
]
}
}
}
},
"aggregations": {
"types": {
"terms": {
"field": "color"
}
}
}
}
在上面的查询中,我想只获取那 1000 个检索到的文档的聚合结果。
有什么建议吗?
【问题讨论】: