我正在尝试在Elasticsearch中进行简单的查询,但我无法弄清楚如何做到这一点。我在互联网上搜索了很多,但没有讨论这种情况。
假设我有像这样的项目:
我想要查询股票中总价格的结果。
例如:100*2 + 200*3 + 150*1 + 250*5
这个查询的结果应该是2,200。
上一个数据的答案查询是有效的,但是对于这种复杂情况怎么办呢?
在这种情况下,下一个查询无法正常工作,给出了错误的答案(1,420,而不是6,000):
假设我有像这样的项目:
{
"item_id": 1,
"item_price": 100,
"item_quantity": 2
},
{
"item_id": 2,
"item_price": 200,
"item_quantity": 3
},
{
"item_id": 3,
"item_price": 150,
"item_quantity": 1
},
{
"item_id": 4,
"item_price": 250,
"item_quantity": 5
}
我想要查询股票中总价格的结果。
例如:100*2 + 200*3 + 150*1 + 250*5
这个查询的结果应该是2,200。
上一个数据的答案查询是有效的,但是对于这种复杂情况怎么办呢?
POST tests/test2/
{
"item_category": "aaa",
"items":
[
{
"item_id": 1,
"item_price": 100,
"item_quantity": 2
},
{
"item_id": 2,
"item_price": 150,
"item_quantity": 4
}
]
}
POST tests/test2/
{
"item_category": "bbb",
"items":
[
{
"item_id": 3,
"item_price": 200,
"item_quantity": 3
},
{
"item_id": 4,
"item_price": 200,
"item_quantity": 5
}
]
}
POST tests/test2/
{
"item_category": "ccc",
"items":
[
{
"item_id": 5,
"item_price": 300,
"item_quantity": 2
},
{
"item_id": 6,
"item_price": 150,
"item_quantity": 8
}
]
}
POST tests/test2/
{
"item_category": "ddd",
"items":
[
{
"item_id": 7,
"item_price": 80,
"item_quantity": 10
},
{
"item_id": 8,
"item_price": 250,
"item_quantity": 4
}
]
}
在这种情况下,下一个查询无法正常工作,给出了错误的答案(1,420,而不是6,000):
GET tests/test2/_search
{
"query": {
"match_all": { }
},
"aggs": {
"total_price": {
"sum": {
"script": {
"lang": "painless",
"inline": "doc['items.item_price'].value * doc['items.item_quantity'].value"
}
}
}
}
}