我必须建立一个价格比较系统。我的想法是使用Elasticsearch构建。 现在我有这个问题。如何汇总每个产品的卖家价格。
让我说我有这个简单的映射:
products: {
product: {
properties: {
id: {
type: "long"
},
name: {
type: "string"
},
....
sellers: {
dynamic: "true",
properties: {
sellerId: {
type: "long"
},
price: {
type: "float"
}
}
}
}
}
}
我可以汇总或分析每种产品的价格(最低,最高和卖家数量)吗?
或者有没有办法用父子关系建立这个东西?
答案 0 :(得分:1)
假设您使用的是1.0而不是0.90,那么您可以使用min,max和value_count聚合轻松完成此操作。
{
"query": {
"match": {
"name": "item1"
}
},
"aggs": {
"Min": {
"min": {
"field": "sellers.price"
}
},
"Max": {
"max": {
"field": "sellers.price"
}
},
"SellerCount": {
"value_count": {
"field": "sellers.sellerId"
}
}
}
}
或者,您可以使用子聚合来返回每个产品的信息,而不是特定的产品。
{
"aggs": {
"Products": {
"terms": {
"field": "name",
"size": 10
},
"aggs": {
"Min": {
"min": {
"field": "sellers.price"
}
},
"Max": {
"max": {
"field": "sellers.price"
}
},
"SellerCount": {
"value_count": {
"field": "sellers.sellerId"
}
}
}
}
}
}