这是场景:
想象一下,注册用户创建了一个新实体,price: 1 | currency: EUR而其他注册用户创建了一个新的实体,price: 1 | currency: USD依此类推......
我想要做的是根据前端用户选择的货币(欧元或美元)按价格排序记录.
我不能索引,例如price_eur或者price_usd,因为费率每小时都在变化,但如果可能的话,更新10000条记录的价格的最佳方法是什么?
1 - 以下是我的建议,它有效,但我认为可能是一个更好的方法,任何建议?
2 - 如果没有,那么更好的性能方法是什么?
3 - ES有一些魔法文件可以播放和使用,用于示例price_in_eur吗?
功能评分
{
"query": {
"function_score": {
"functions": [
{
"script_score": {
// 1 EUR = 0.74452 USD
"script": "('EUR' == _source.currency ? doc['boat.price'].value : doc['boat.price'].value * 0.744520)"
}
}
],
"query": {
"filtered": {
"query": { "match_all":{} }
}
}
}
},
"sort": { "_score": { "order": "desc" }}
}
Run Code Online (Sandbox Code Playgroud)
排序脚本
{
"fields": ["_source"],
"query": { "match_all": {} },
"sort": {
"_script": {
// 1 EUR = 0.74452 USD
"script": "('EUR' == _source.currency ? doc['boat.price'].value : doc['boat.price'].value * 0.744520)",
"type" : "number",
"order": "asc"
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间.
| 归档时间: |
|
| 查看次数: |
2103 次 |
| 最近记录: |