Elasticsearch学习笔记2----聚合操作及常见问题解决
2017-11-04 15:52
330 查看
aggs 聚合
"terms" : { " field": "" }
分组
"avg" : { "field" : "price" }
求平均值
"order": { "avg_price": "desc" }
排序
最后一个案例是按范围分组
第一个分析需求:计算每个tag下的商品数量(根据tag分组)
GET /ecommerce/product/_search
{
"aggs": {
"group_by_tags": {
"terms": { "field": "tags" }
}
}
}
发现报错
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [tags] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
}
],
解决:将文本field的fielddata属性设置为true
PUT /ecommerce/_mapping/product
{
"properties": {
"tags": {
"type": "text",
"fielddata": true
}
}
}
再重复上面操作就可以了。
第三个聚合分析的需求:先分组,再算每组的平均值,计算每个tag下的商品的平均价格
GET /ecommerce/product/_search
{
"size": 0,
"aggs" : {
"group_by_tags" : {
"terms" : { "field" : "tags" },
"aggs" : {
"avg_price" : {
"avg" : { "field" : "price" }
}
}
}
}
}
----------------------------------------------------------------------------------------------------------------
第四个数据分析需求:计算每个tag下的商品的平均价格,并且按照平均价格降序排序
GET /ecommerce/product/_search
{
"size": 0,
"aggs" : {
"all_tags" : {
"terms" : { "field" : "tags", "order": { "avg_price": "desc" } },
"aggs" : {
"avg_price" : {
"avg" : { "field" : "price" }
}
}
}
}
}
----------------------------------------------------------------------------------------------------------------
第五个数据分析需求:按照指定的价格范围区间进行分组,然后在每组内再按照tag进行分组,最后再计算每组的平均价格。
GET /ecommerce/product/_search
{
"size": 0,
"aggs": {
"group_by_price": {
"range": {
"field": "price",
"ranges": [
{
"from": 0,
"to": 20
},
{
"from": 20,
"to": 40
},
{
"from": 40,
"to": 50
}
]
},
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags"
},
"aggs": {
"average_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
}
}
"terms" : { " field": "" }
分组
"avg" : { "field" : "price" }
求平均值
"order": { "avg_price": "desc" }
排序
最后一个案例是按范围分组
第一个分析需求:计算每个tag下的商品数量(根据tag分组)
GET /ecommerce/product/_search
{
"aggs": {
"group_by_tags": {
"terms": { "field": "tags" }
}
}
}
发现报错
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [tags] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
}
],
解决:将文本field的fielddata属性设置为true
PUT /ecommerce/_mapping/product
{
"properties": {
"tags": {
"type": "text",
"fielddata": true
}
}
}
再重复上面操作就可以了。
第三个聚合分析的需求:先分组,再算每组的平均值,计算每个tag下的商品的平均价格
GET /ecommerce/product/_search
{
"size": 0,
"aggs" : {
"group_by_tags" : {
"terms" : { "field" : "tags" },
"aggs" : {
"avg_price" : {
"avg" : { "field" : "price" }
}
}
}
}
}
----------------------------------------------------------------------------------------------------------------
第四个数据分析需求:计算每个tag下的商品的平均价格,并且按照平均价格降序排序
GET /ecommerce/product/_search
{
"size": 0,
"aggs" : {
"all_tags" : {
"terms" : { "field" : "tags", "order": { "avg_price": "desc" } },
"aggs" : {
"avg_price" : {
"avg" : { "field" : "price" }
}
}
}
}
}
----------------------------------------------------------------------------------------------------------------
第五个数据分析需求:按照指定的价格范围区间进行分组,然后在每组内再按照tag进行分组,最后再计算每组的平均价格。
GET /ecommerce/product/_search
{
"size": 0,
"aggs": {
"group_by_price": {
"range": {
"field": "price",
"ranges": [
{
"from": 0,
"to": 20
},
{
"from": 20,
"to": 40
},
{
"from": 40,
"to": 50
}
]
},
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags"
},
"aggs": {
"average_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
}
}
相关文章推荐
- 【小梅哥SOPC学习笔记】SOPC开发常见问题及解决办法集锦
- 我的嵌入式学习笔记(2)--scanf使用常见问题及解决方法
- 我的嵌入式学习笔记(2)--scanf使用常见问题及解决方法
- linux学习笔记--常见问题解决方法
- [javase学习笔记]-5.3 数组操作中常见问题
- 我的嵌入式学习笔记(2)--scanf使用常见问题及解决方法
- ESXi(ESXi 4.1)相关问题解决方法和操作学习笔记
- 【记录】正则表达式学习第3天(正则学习笔记),又解决了个实际问题。
- 【个人学习笔记8之--关于OVER子句 多属性的比较 PIVOT 聚合问题】
- jquery 新手学习常见问题解决方法
- CEGUI学习笔记 -- 使用CEGUI解决具体问题
- 常见问题及解决办法 整理之8-3(日期的相关操作)
- 常见问题及解决办法 整理之8-4(日期的相关操作)
- 常见问题及解决办法 整理之8-2(日期的相关操作)
- 常见问题及解决办法 整理之3(字符串相关操作)
- jquery 新手学习常见问题解决方法
- linux 学习笔记 gdb问题解决
- PowerDesingner学习--常见问题解决(转)
- 常见问题及解决办法 整理之8-1(日期的相关操作)
- CEGUI学习笔记五--使用CEGUI解决具体问题(转kun(小龙))