我正在尝试使用脚本查询过滤结果。
我可以这样访问带有硬编码字段值的参数值:
"script": "doc['price'].value * params.1000 > 4000",
"params": {"1000": "1.75"}
但是,如果我尝试使用doc获取字段值,则不会进行过滤,并且可以看到所有结果。
"script": "doc['price'].value * params.doc['rate'] > 4000",
"params": {"1000": "1.75"}
有什么解决方案可以动态获取参数值?
编辑:
字段“费率”只是ID。它是Integer,但不是我需要的值。想法是每次通过参数传递不同的值,而不是频繁更新字段“rate”。希望这是更好的解释...
例:
"script": "doc['price'].value * params.doc['rate'] > 4000",
"params": {
"1000": "1.75",
"1001": "3.75",
"1002": "5"
}
if
'price' == 10 &&
'rate' == 1002
result should be: 10 * 5 > 4000
if
'price' == 10 &&
'rate' == 1001
result should be: 10 * 3.75 > 4000
if
'price' == 7 &&
'rate' == 1000
result should be: 7 * 1.75 > 4000
最佳答案
我假设rate
为integer
,如果不是这样的话,脚本看起来就不会这样。如果我正确理解了您的过滤条件,那么请纠正我:
"script": "(doc['price'].value * doc['rate'].value) > 4000", <--replace params with doc
"params": {"1000": "1.75"}
关于elasticsearch - Elasticsearch脚本查询按字段值获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209904/