主要概念与mysql对比

Elasticsearch 入门_统计分析

 

对于HTTP方法,具体作用

HTTP方法

操作

说明

GET


获取请求对象的当前状态

POST


改变对象的当前状态

PUT


创建一个对象

DELETE


销毁对象

HEAD

 

请求获取对象的基础信息

增删改查

以下在Kibana的Dev Tools里执行

PUT /account/info/1
{
"price": 10000,
"color": "红色",
"make": "汉兰达",
"sold": "2014-10-28"
}

删除id=4的记录

DELETE /account/info/1

删不了/settle/jingyi

删settle索引

DELETE /account

POST /account/info/1/_update
{
"doc": {"color": "黑色"}
}

GET /account/int/1

批量插入

POST /account/info/_bulk
{ "index": {}}
{ "price" : 20000, "color" : "红色", "make" : "汉兰达", "sold" : "2014-11-05" }
{ "index": {}}
{ "price" : 30000, "color" : "绿色", "make" : "福特", "sold" : "2014-05-18" }
{ "index": {}}
{ "price" : 15000, "color" : "蓝色", "make" : "丰田", "sold" : "2014-07-02" }
{ "index": {}}
{ "price" : 12000, "color" : "绿色", "make" : "丰田", "sold" : "2014-08-19" }
{ "index": {}}
{ "price" : 20000, "color" : "红色", "make" : "汉兰达", "sold" : "2014-11-05" }
{ "index": {}}
{ "price" : 80000, "color" : "红色", "make" : "宝马", "sold" : "2014-01-01" }
{ "index": {}}
{ "price" : 25000, "color" : "蓝色", "make" : "福特", "sold" : "2014-02-12"

怎么获取单条记录呢?

统计应用

统计每种颜色的数量

类似mysql语句: select color, count(*)  from info group by color;

GET account/info/_search
{
"size": 0, 【3】
"aggs": { 【1】
"SalesNum": { 【2】
"terms": { 【4】
"field": "color.keyword",
"size": 10
}
}
}
}

注释

【1】:如果想要进行统计分析,统计代码需要写在aggs中,aggs是aggregations 的简称,也可以写作 aggregations。

【2】:是指定的列的名称,作用同SQLSERVER统计中as 重命名。

【3】:这里设置了返回值为0,因为这个查询不仅仅返回了我们的统计的内容,还返回了搜索结果的内容,这里我们并不需要搜索结果的内容,所以设置为0.

【4】:这里定义了桶的类型,如果需要不同的统计内容,这些需要使用不同的统计类型。

结果

{
"took" : 21,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 8,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"SalesNum" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "红色",
"doc_count" : 3
},
{
"key" : "绿色",
"doc_count" : 2
},
{
"key" : "蓝色",
"doc_count" : 2
},
{
"key" : "黑色",
"doc_count" : 1
}
]
}
}
}

统计每种颜色的平均价格

类似mysql: select color, avg(price) from info group by color;

GET account/info/_search
{
"size": 0,
"aggs": {
"s": {
"terms": {
"field": "color.keyword",
"size": 10
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}

结果

{
"took" : 13,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 8,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"s" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "红色",
"doc_count" : 3,
"avg_price" : {
"value" : 40000.0
}
},
{
"key" : "绿色",
"doc_count" : 2,
"avg_price" : {
"value" : 21000.0
}
},
{
"key" : "蓝色",
"doc_count" : 2,
"avg_price" : {
"value" : 20000.0
}
},
{
"key" : "黑色",
"doc_count" : 1,
"avg_price" : {
"value" : 10000.0
}
}
]
}
}
}

统计每一个企业品牌的最低价格和最高价格

类似mysql 语句: select make, min(price), max(price) from info group by make;

GET account/info/_search
{
"size": 0
,"aggs": {
"make": {
"terms": {
"field": "make.keyword"
},
"aggs": {
"price_age": {
"avg": {
"field": "price"
}
},
"min_price": {
"min": {
"field": "price"
}
},
"max_price":{
"max": {
"field": "price"
}
}
}
}
}
}

结果

{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 8,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"make" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "汉兰达",
"doc_count" : 3,
"max_price" : {
"value" : 20000.0
},
"min_price" : {
"value" : 10000.0
},
"price_age" : {
"value" : 16666.666666666668
}
},
{
"key" : "丰田",
"doc_count" : 2,
"max_price" : {
"value" : 15000.0
},
"min_price" : {
"value" : 12000.0
},
"price_age" : {
"value" : 13500.0
}
},
{
"key" : "福特",
"doc_count" : 2,
"max_price" : {
"value" : 30000.0
},
"min_price" : {
"value" : 25000.0
},
"price_age" : {
"value" : 27500.0
}
},
{
"key" : "宝马",
"doc_count" : 1,
"max_price" : {
"value" : 80000.0
},
"min_price" : {
"value" : 80000.0
},
"price_age" : {
"value" : 80000.0
}
}
]
}
}
}