今天聊聊elasticsearch的聚合aggregation功能。
在解释elasticsearch的时候,都喜欢将es与关系数据库做对比参照,一来大部分coder对关系数据库都有或多或少了解,基本的关系模型、select功能都清楚;二来忽略内部实现如何,就表现出来的功能而言,两者也有可比之处。将两者作对比,可以帮助es新人更好的了解、使用es。接下来就看看两者的aggregation对比如何。
假定有es有一个index,存储了某家汽车经销商的销售信息:包括车的售价、销售时间、车身颜色、生产厂商等。结构如下:
PUT cars
{
"mappings": {
"properties": {
"price":{
"type": "long"
},
"color":{
"type": "keyword"
},
"make":{
"type": "keyword"
},
"sold":{
"type": "date"
}
}
}
}
那这个index在mysql中可能就对应下面的表结构:
create table cars(price integer,color varchar(20),make varchar(50),sold datetime);
往es中写入数据:
POST /cars/_bulk
{ "index&