在了解本文内容前,必须先了解ES DSL查询和ES 聚合查询,ES基于查询结果的聚合分为两种,第一种类似与关系型数据库中的Having语法,第二种类似于关系型数据库中先where在group by的语法...,本文主要分析先查询后聚合场景
演示数据从ES 聚合查询获取
1、先查询后聚合
现在需要统计价格在50到500价格范围区间的所有食物,并按照标签进行聚合查询,代码如下:
GET food/_search...field": "Tags.keyword",
"order": {
"_count": "asc"
}
}
}
}
}
搜索结果如下...{
"key" : "水果",
"doc_count" : 2
}
]
}
}
}
hits中是按照query查询的结果集...,下面是根据query的结果集进行的聚合查询.
2、先聚合后查询(注意这里不是having语法,而是查询聚合里面的详情) 通过post_filter实现
现在需要查询价格范围在50到500之间,按照标签分组之后