web-dev-qa-db-ja.com

Elasticsearchの痛みのないスクリプトエラー

私は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]にキャストできません。」

誰かが私を助けてくれますか、同様の種類のエラーで多くのバリエーションを試しました。くそったれのない言葉...

16
Alexandru R

あなたは単に .value フィールド値にアクセスします。

代わりに、スクリプトは次のようにする必要があります。

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

とは違う

doc['newPrice'].value

後で使用する必要があります

1