1

アイテムがまだリストにない場合にのみ、リストフィールドを更新しようとしています。

どうしたの:

curl -X POST 'http://localhost:9200/my_index/my_doc/id/_update' -d 
'{ "script":
"{if !(ctx._source.my_field contains new_item) {ctx._source.my_field.add(new_item)}}" 
, "params":{"new_item":"hopefully_new_text"}}'

これにより、アイテムが存在する場合でも、とにかくアイテムが追加されます。

それを行うためのよりスマートな方法はありますか?

4

1 に答える 1

1

これは、MVEL の解析動作に関する多くの奇妙な点の 1 つです。最も外側の を削除する{ }と、if ステートメントに構文エラーがあることがわかります。そのエラーを修正すると、すべてが機能します。

curl -X POST 'http://localhost:9200/my_index/my_doc/id/_update' -d  '{
    "script": "if (!(ctx._source.my_field contains new_item)) {ctx._source.my_field.add(new_item)}",
    "params": {
        "new_item": "hopefully_new_text"
    }
}
'
于 2013-03-03T17:18:46.067 に答える