Je n'ai pas Java expérience et j'ai un problème avec le langage de script indolore elasticsearch. (Le nom indolore n'est pas bien choisi).
Pour le code suivant, j'obtiens l'erreur:
{"lang": "painless",
"inline": "float price = doc['newPrice'] > 0.0 ? doc['price'] / doc['newPrice'] : 0; _score * params.constant * price",
"params": {"constant": 1.2}}}}
Impossible d'appliquer l'opération [>] aux types [org.elasticsearch.index.fielddata.ScriptDocValues.Doubles] et [Java.lang.Double].
J'ai attaché pour le cast comme float avec (float) doc ['newPrice']> 0 avec la même erreur.
Ensuite, je suis passé à "Double price = ((Double)doc['discountPrice'] > 0.0) ? doc['price'] / doc['discountPrice'] : 0; _score * params.constant * price",
Et reçu:
'Impossible de caster de [Double] en [double].'
Quelqu'un peut-il m'aider, a essayé de nombreuses variantes avec des erreurs similaires. Putain de langage indolore ...
Vous êtes simplement manque le .value
pour accéder à la valeur du champ.
Votre script doit être comme ceci à la place:
double price = doc['newPrice'].value > 0.0 ? doc['price'].value / doc['newPrice'].value : 0; _score * params.constant * price
doc['newPrice']
est différent de
doc['newPrice'].value
Vous devez utiliser la dernière version