2016-10-26 4 views
0

Я пытаюсь запустить update by query по индексу elasticsearch, используя метод, приведенный в this. Это вопрос, который я пытался бежать:Обновление по запросу в elasticsearch

curl -XPOST 'localhost:9200/my_index/_update_by_query' -d ' 
{ 
    "query":{ 
    "match":{ 
     "latest_uuid":"d56ffe2095f511e6bcdd0acbdf0298e3" 
    } 
    }, 
    "script" : "ctx._source.is_in_stock = \"false\";" 
}' 

Но я получаю следующее сообщение об ошибке:

{ 
    "error": { 
     "root_cause": [ 
      { 
       "type": "class_cast_exception", 
       "reason": "java.lang.String cannot be cast to java.util.Map" 
      } 
     ], 
     "type": "class_cast_exception", 
     "reason": "java.lang.String cannot be cast to java.util.Map" 
    }, 
    "status": 500 
} 

Что я здесь делаю неправильно?

+0

попробуйте «_update_by_query? Is_in_stock = false» и удалите строку сценария, чтобы увидеть, является ли проблема скриптом –

ответ

1

Нашли решение.

Оказывается, что я должен был использовать следующий как сценарий:

"script":{"inline":"ctx._source.is_in_stock = false"} 
0

Я думаю, что проблема может быть \ «ложь \» (строковое значение), которые не хотят быть брошены.

curl -XPOST 'localhost:9200/my_index/_update_by_query' -d ' 
{ 
    "query":{ 
    "match":{ 
     "latest_uuid":"d56ffe2095f511e6bcdd0acbdf0298e3" 
    } 
    }, 
    "script" : "ctx._source.is_in_stock = false;" 
}' 

Сначала вы можете попробовать. Жду ваших отзывов! :)

+1

Привет, я нашел проблему и добавил ответ, соответствующий этому. Спасибо за помощь! :) –

+0

Да, я вижу, мы публикуем в то же время, GGWP! –

Смежные вопросы