用户可以使用价格创建新实体。价格可以是不同的货币(欧元,美元......),因此我们可以通过乘以(价格* convert_rate)来获得实际价格。
我尝试做的是按价格过滤记录,具体取决于前端用户选择的货币和金额(欧元或美元)。
问题是费率经常变化,所以我不能更新每个文件的费率。
有没有办法按数组过滤(使用rate_id => convert_rate),或者在查询中通过currency_id动态导入convert_rate?像这样:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc[\"price\"].value * convert_rate > 5"
}
}
}
}
}
编辑:
每个产品都有currency_id。通过currency_id,我想找到convert_rate,然后将其与价格相乘。
货币汇率可以是其他文件或阵列。
也许这会澄清我需要做什么
"products" : {
"properties" : {
"id" : {
"type" : "integer"
},
"currency_id" : {
"type" : "integer"
},
"price" : {
"type" : "double"
}
}
}
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc[\"price\"].value > convert_rate",
"params" : {
"convert_rate" : **get.convert_rate.where.currency_id == doc[\"currency_id\"].value**
}
}
}
}
}
}
答案 0 :(得分:0)
查看自定义参数 - 您可以将查询中的enything传递给脚本
https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-script-query.html