22

私は 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 で float としてキャストするように結びました。

それから私はに変更しました"Double price = ((Double)doc['discountPrice'] > 0.0) ? doc['price'] / doc['discountPrice'] : 0; _score * params.constant * price",

そして受け取った:

「[ダブル]から[ダブル]へのキャストはできません。」

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

4

2 に答える 2

45

フィールド値にアクセスするための が欠けて.valueいるだけです。

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

double price = doc['newPrice'].value > 0.0 ? doc['price'].value / doc['newPrice'].value : 0; _score * params.constant * price
于 2016-12-27T16:04:40.573 に答える