Elasticsearch 无痛脚本错误
Elasticsearch painless script error
我没有 Java 经验,而且我对 elasticsearch 无痛脚本语言有疑问。 (painless这个名字不好选)
对于以下代码,我得到错误:
{"lang": "painless",
"inline": "float price = doc['newPrice'] > 0.0 ? doc['price'] / doc['newPrice'] : 0; _score * params.constant * price",
"params": {"constant": 1.2}}}}
Cannot apply [>] operation to types
[org.elasticsearch.index.fielddata.ScriptDocValues.Doubles] and
[java.lang.Double].
我用 (float) doc['newPrice'] > 0 将其转换为 float,但出现同样的错误。
然后我改成了"Double price = ((Double)doc['discountPrice'] > 0.0) ? doc['price'] / doc['discountPrice'] : 0; _score * params.constant * price",
并收到:
'Cannot cast from [Double] to [double].'
有人可以帮助我吗,尝试了很多具有类似错误的变体。
该死的无痛语...
您只需 missing the .value
即可访问字段值。
您的脚本需要改为这样:
double price = doc['newPrice'].value > 0.0 ? doc['price'].value / doc['newPrice'].value : 0; _score * params.constant * price
doc['newPrice']
不同于
doc['newPrice'].value
你应该使用后者
我没有 Java 经验,而且我对 elasticsearch 无痛脚本语言有疑问。 (painless这个名字不好选)
对于以下代码,我得到错误:
{"lang": "painless",
"inline": "float price = doc['newPrice'] > 0.0 ? doc['price'] / doc['newPrice'] : 0; _score * params.constant * price",
"params": {"constant": 1.2}}}}
Cannot apply [>] operation to types [org.elasticsearch.index.fielddata.ScriptDocValues.Doubles] and [java.lang.Double].
我用 (float) doc['newPrice'] > 0 将其转换为 float,但出现同样的错误。
然后我改成了"Double price = ((Double)doc['discountPrice'] > 0.0) ? doc['price'] / doc['discountPrice'] : 0; _score * params.constant * price",
并收到:
'Cannot cast from [Double] to [double].'
有人可以帮助我吗,尝试了很多具有类似错误的变体。 该死的无痛语...
您只需 missing the .value
即可访问字段值。
您的脚本需要改为这样:
double price = doc['newPrice'].value > 0.0 ? doc['price'].value / doc['newPrice'].value : 0; _score * params.constant * price
doc['newPrice']
不同于
doc['newPrice'].value
你应该使用后者