Ale*_*u R 12 java elasticsearch elasticsearch-painless
我没有Java经验,我有弹性搜索无痛脚本语言的问题.(这个名字是无痛的,不是很好选择).
对于以下代码,我收到错误:
{"lang": "painless",
"inline": "float price = doc['newPrice'] > 0.0 ? doc['price'] / doc['newPrice'] : 0; _score * params.constant * price",
"params": {"constant": 1.2}}}}
Run Code Online (Sandbox Code Playgroud)
无法对类型[org.elasticsearch.index.fielddata.ScriptDocValues.Doubles]和[java.lang.Double]应用[>]操作.
我绑定使用(浮动)doc ['newPrice']> 0将其转换为浮动,但具有相同的错误.
然后我改为 "Double price = ((Double)doc['discountPrice'] > 0.0) ? doc['price'] / doc['discountPrice'] : 0; _score * params.constant * price",
并收到:
'无法从[Double]转换为[double].
有人可以帮助我,尝试了很多类似错误的变化.该死的无痛语言......
Val*_*Val 25
您只是错过了.value访问字段值.
你的脚本需要像这样:
double price = doc['newPrice'].value > 0.0 ? doc['price'].value / doc['newPrice'].value : 0; _score * params.constant * price
Run Code Online (Sandbox Code Playgroud)
doc['newPrice']
Run Code Online (Sandbox Code Playgroud)
不同于
doc['newPrice'].value
Run Code Online (Sandbox Code Playgroud)
你应该使用后面的