统计一定范围内出现的文档个数,比如,针对某一个Field
的值在 0到100,100到200,200到300之间文档出现的个数分别是多少。
范围统计可以针对普通的数值,针对时间类型,针对ip类型都可以做相应的统计。
range,date_range,ip_range (可以统计数值,时间,ip等类型)
注意:from 5 to 10 的含义是从5 到10;包含当前值;from是大于;to是小于;
GET /book/novel/_search
{
"aggs": {
"count_pro": {
"range": {
"field": "price",
"ranges": [
{"to":10},
{"from": 100,
"to": 150
},
{"from": 100}
]
}
}
}
}
解释:aggs
代表着聚合查询;count_pro
代表着自定义的聚合查询名称;range代表这是一个范围查询;然后field
定义查找范围的字段;ranges
是定义查找的范围;to
是小于,也就是小于10的有哪些;大于100小于150的有哪些;from :100
代表着大于一百的有哪些;
查询结果看aggregations
:
"aggregations" : {
"count_pro" : {
"buckets" : [
{
"key" : "*-10.0",
"to" : 10.0,
"doc_count" : 0
},
{
"key" : "100.0-150.0",
"from" : 100.0,
"to" : 150.0,
"doc_count" : 0
},
{
"key" : "100.0-*",
"from" : 100.0,
"doc_count" : 10
}
]
}
}
注意:查询时间的范围需要用得到规定时间格式加一个format
;可以自己定义到底是按照年还是月等来查询;yyyy
就代表着年,MM
代表着月;
#时间方式范围统计
POST /sms-logs-index/sms-logs-type/_search
{
"aggs": {
"agg": {
"date_range": {
"field": "createDate",
"format": "yyyy",
"ranges": [
{
"to": 2000
},
{
"from": 2000
}
]
}
}
}
}
注意:查询Ip的时候必须是IP字段;ES中有专门的IP字段,别的字段就不能使用这个进行统计查询;
#ip方式 范围统计
POST /sms-logs-index/sms-logs-type/_search
{
"aggs": {
"agg": {
"ip_range": {
"field": "ipAddr",
"ranges": [
{
"to": "10.126.2.9"
},
{
"from": "10.126.2.9"
}
]
}
}
}
}
。。。。。。。。。。。。。
嘻哈的简写笔记
。。。。。。。。。。。。。