Elasticsearch -- 基本拼接查询语法
程序员文章站
2022-07-05 13:09:53
...
Elasticsearch基本语法
将fielddata设置为true;
PUT ecommerce/_mapping/product
{
"properties": {
"tags":{
"type": "text",
"fielddata": true
}
}
}
计算每个tags下的商品数量:
Get ecommerce/product/_search
{
"size":0,
"aggs":{
"group_by_tags":{
"terms": {
"field": "tags",
"size": 10
}
}
}
}
聚合分析:对商品中包含yagao的商品,计算每个tag下的商品数量
Get ecommerce/product/_search
{
"size":0,
"query":{
"match": {
"name": "yagao"
}
},
"aggs":{
"group_by_tags":{
"terms": {
"field": "tags",
"size": 10
}
}
}
}
先分组,再算每组的平均值,计算每个tag下的商品平均价格
(会列出每个描述的平均价格)
GET ecommerce/product/_search
{
"size":0,
"aggs":{
"group_by_tags":{
"terms": {
"field": "tags",
"size": 10
},
"aggs":{
"avg_price":{
"avg":{
"field":"price"
}
}
}
}
}
}
计算tag下的商品平均价格,并且按照平均价格降序排序:
GET ecommerce/product/_search
{
"size":0,
"aggs":{
"group_by_tags":{
"terms": {
"field": "tags",
"size": 10,
"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": 60
}
]
},
"aggs":{
"group_by_tags":{
"terms":{
"field": "tags"
},
"aggs":{
"avg_price":{
"avg":{
"field": "price"
}
}
}
}
}
}
}
}