Elasticsearch无痛脚本错误

时间:2016-12-27 15:56:09

标签: java elasticsearch elasticsearch-painless

我没有Java经验,我对elasticsearch无痛脚本语言有疑问。 (这个名字是无痛的,没有很好地选择)。

对于以下代码,我收到错误:

{"lang": "painless",
"inline": "float price = doc['newPrice'] > 0.0 ? doc['price'] / doc['newPrice'] : 0; _score * params.constant * price",
"params": {"constant": 1.2}}}}
  

无法对类型应用[>]操作   [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]。'

有人可以帮助我,尝试了很多类似错误的变种。 该死的无痛语言......

2 个答案:

答案 0 :(得分:21)

您只需missing the .value即可访问字段值。

你的脚本必须是这样的:

double price = doc['newPrice'].value > 0.0 ? doc['price'].value / doc['newPrice'].value : 0; _score * params.constant * price

答案 1 :(得分:2)

doc['newPrice']

不同
doc['newPrice'].value

你应该使用后面的