Elasticsearch一些函数查询
1. 根据价格分组统计数量,每组区间为2000,
filter_path=aggregations 设置查询结果只展示函数结果
也有date_histogram函数根据日期分组等等
GET order/_search?filter_path=aggregations
{
"aggs": {
"hist_price": {
"histogram": {
"field": "price",
"interval": 2000,
# "min_doc_count": 1 # 设置只有数量大于1的才会展示
}
}
}
}
查询结果:
{
"aggregations" : {
"hist_price" : {
"buckets" : [
{
"key" : 0.0,
"doc_count" : 1
},
{
"key" : 2000.0,
"doc_count" : 4
},
{
"key" : 4000.0,
"doc_count" : 0
},
{
"key" : 6000.0,
"doc_count" : 1
}
]
}
}
}
2. 查询20%之内,50%之内,100%之内的价格都在多少钱之下
查询结果为近似值跟ES的算法有关
GET order/_search?filter_path=aggregations
{
"aggs": {
"percent_price": {
"percentiles": {
"field": "price",
"percents": [
20,
50,
100
]
}
}
}
}
查询结果:
{
"aggregations" : {
"percent_price" : {
"values" : {
"20.0" : 1700.0000000000002,
"50.0" : 2500.0,
"100.0" : 6000.0
}
}
}
}
3. 查询2的相反情况,例:查询2000,和 6000之内的占比
GET order/_search?filter_path=aggregations
{
"aggs": {
"percent_price": {
"percentile_ranks": {
"field": "price",
"values": [
2000,
6000
]
}
}
}
}
查询结果:
{
"aggregations" : {
"percent_price" : {
"values" : {
"2000.0" : 16.666666666666664,
"6000.0" : 82.73866923818709
}
}
}
}