Найти и заменить вasticsearch все документы

Я хотел заменить одно имя пользователя во всех моих индексных документахasticsearch. Есть ли запрос API?

Я пытался найти несколько, но не смог найти. У кого-нибудь есть идея?

Мой сценарий:

curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"mad", "role":"tester"}'
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"bob", "role":"engineer"}'
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"cat", "role":"engineer"}'
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"bob", "role":"doctor"}'

У меня есть вышеуказанные данные в индексе под названием «тест» и типа «фильмы». Здесь я хотел заменить все имя "Боб" на "Алиса".

Спасибо

 Berin Loritsch28 июл. 2016 г., 14:36
Что ты пытаешься сделать? Индексируйте предоставленные данные? Поиск? Существуют разные комбинации URL / HTTP-методов для каждого.-XPUT для определенного типа / индекса будет индексировать документ (заменяя его, если вы укажете существующий идентификатор)elastic.co/guide/en/elasticsearch/guide/current/index-doc.html -XGET с определенным типом / индексом, чтобы получить конкретную записьelastic.co/guide/en/elasticsearch/guide/current/get-doc.html  и т.п.
 Madhu Akula28 июл. 2016 г., 14:39
Я знаю, как сделать обновление, используя для одного документа, взяв идентификатор индекса. Но идентификатор индекса генерируется автоматически. Я хотел заменить одну строку другой во всех документах.

Ответы на вопрос(1)

Решение Вопроса

обновить, по-запросу это путь

POST /test/movies/_update_by_query
{
  "script": {
    "inline": "ctx._source.user = 'alice'"
  },
  "query": {
    "term": {
      "user": "bob"
    }
  }
}

Примечание: убедитесь, чтовключить динамический сценарий для того, чтобы это работало.

 Madhu Akula28 июл. 2016 г., 15:30
Починил это. За работой. Знаете ли вы какой-нибудь способ экспортировать данные в JSON?
 Madhu Akula28 июл. 2016 г., 14:49
Нужно ли включать для этого Groovy и встроенный скрипт? Если вы знаете точный синтаксис, не могли бы вы прокомментировать здесь? script.inline: true script.indexed: true
 Val28 июл. 2016 г., 14:47
Здорово, рад, что это помогло!
 Val28 июл. 2016 г., 15:06
Вам нужны одинарные кавычки (или экранированные двойные кавычки) вокруг Алисы, т.е.ctx._source.user = 'alice'
 Val28 июл. 2016 г., 14:50
Хороший вопрос, да, вы сделаете, я обновлю свой ответ, чтобы упомянуть об этом.
 Val28 июл. 2016 г., 15:31
Хорошо. Да ,asticdump - хороший инструмент для этого. Увидетьstackoverflow.com/questions/38517663/...
 Madhu Akula28 июл. 2016 г., 15:00
Для 2.3.4 по-прежнему не работает, после включения вasticsearch.yml и после перезапуска службы. Вот ошибка, которую я получаю {"error": {"root_cause": [{"type": "script_exception", "reason": "не удалось запустить встроенный скрипт [ctx._source.user = alice] с использованием lang [groovy] ] "}]," type ":" script_exception "," reason ":" не удалось запустить встроенный скрипт [ctx._source.user = alice] с использованием lang [groovy] "," said_by ": {" type ":" missing_property_exception "," reason ":" Нет такого свойства: alice для класса: 11d6dc9400ad10c4b07xxxxxxxxxxxxx}}, "status": 500}
 Madhu Akula28 июл. 2016 г., 14:46
Огромное спасибо. Работает как шарм.

Ваш ответ на вопрос