Elasticsearch: aggregation
作者:互联网
Aggregation可不指定查询条件, 默认查询所有
求和:
以price进行分组
# 以price进行分组 get vanilla/_search { "query":{ "match_all": {} }, "aggs":{ "group_price":{ "terms": { "field": "price", "size": 3 # 取分组前三 } } } } # 最大值 get vanilla/_search { "query":{ "match_all": {} }, "size": 0, "aggs":{ "max_price":{ "max":{ "field": "price" } } } } # 默认查询所有 get vanilla/_search { "aggs":{ "max_price":{ "max":{ "field": "price" } } } } # 求和 get vanilla/_search { "query":{ "match_all": {} }, "size":0, "aggs":{ "max_price":{ "sum":{ "field": "price" } } } }
利用Python插入测试数据
from elasticsearch import Elasticsearch client = Elasticsearch('http://localhost:9200') lst = [ {'title': '面包', 'price': 19.9, 'description': '小面包非常好吃'}, {'title': '旺仔牛奶', 'price': 29.9, 'description': '非常好喝'}, {'title': '日本豆', 'price': 19.9, 'description': '日本豆非常好吃'}, {'title': '小馒头', 'price': 19.9, 'description': '小馒头非常好吃'}, {'title': '大辣片', 'price': 39.9, 'description': '大辣片非常好吃'}, {'title': '透心凉', 'price': 9.9, 'description': '透心凉非常好喝'}, {'title': '小浣熊', 'price': 19.9, 'description': '童年的味道'}, {'title': '海苔', 'price': 49.9, 'description': '海的味道'}, ] # for item in lst: # client.index(index = 'vanilla', document = item) # response = client.index(index = 'vanilla', document = doc) # print(response['result']) t1 = client.get(index = 'vanilla', id = '1') print(t1['_source']) client.indices.refresh(index = 'vanilla') response = client.search(index = 'vanilla', query = { "match_all": {} }) print(f'hits: {response["hits"]["total"]["value"]}') for hit in response['hits']['hits']: print('title: {title:<8} price: {price: 5.2f} description: {description}'.format(**hit['_source']))
标签:index,description,title,vanilla,aggregation,client,Elasticsearch,price 来源: https://www.cnblogs.com/dissipate/p/16030957.html