私は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]に[>]操作を適用できません。
同じエラーで、(float)doc ['newPrice']> 0でフロートとしてキャストすることにしました。
次に、"Double price = ((Double)doc['discountPrice'] > 0.0) ? doc['price'] / doc['discountPrice'] : 0; _score * params.constant * price",
に変更しました
そして受け取った:
「[Double]から[double]にキャストできません。」
誰かが私を助けてくれますか、同様の種類のエラーで多くのバリエーションを試しました。くそったれのない言葉...
あなたは単に .value
フィールド値にアクセスします。
代わりに、スクリプトは次のようにする必要があります。
double price = doc['newPrice'].value > 0.0 ? doc['price'].value / doc['newPrice'].value : 0; _score * params.constant * price
doc['newPrice']
とは違う
doc['newPrice'].value
後で使用する必要があります