Arhn - архитектура программирования

Не удалось обновить вложенное поле в elasticsearch

Я работаю над созданием дампа и обновлением данных Elasticsearch, я могу правильно сбросить данные, но, например, не могу обновить записи.

когда я делаю

GET test/users/3985882

я бы получил следующий ответ

{
  "_index": "test",
  "_type": "users",
  "_id": "3985882",
  "_version": 1,
  "found": true,
  "_source": {
    "gender": null,
    "user_mixpanel_data": {
      "event_name": "Detail",
      "time": "2017-07-01 01:37:43 IST",
      "email": "[email protected]"
    },
    "email": "[email protected]",
    "user_invoices": [
      {
        "number": "54539",
        "orders": [
          {
            "order_id": "54539C1"
          }
        ]
      }
    ]
  }
}

Теперь, когда я пытаюсь обновить вложенный объект user_invoices и мне нужно обновить его, я пробую сценарий из следующего вопроса, заданного на SO, т.е. elasticsearch:использовать скрипт для обновления вложенного поля?

Я изменил сценарий в соответствии со своей проблемой.

POST test/users/_update 
{
    "script": "def updated = false; ctx._source.user_invoices?.each { obj -> if (obj.number == item.number) { obj.number = item.new_number; updated = true;}; if (!updated) { ctx._source.user_invoices = ((ctx._source.user_invoices ?: []) + item)}",
    "lang": "painless",
    "params": {
        "item": {
            "number": "54539",
            "new_number": "54540",
            "order_id": "54539C1",
            "new_order_id": "54539C2"
        }
    }
}

приведенный выше скрипт дает мне следующий ответ

{
  "_index": "test",
  "_type": "users",
  "_id": "_update",
  "_version": 28,
  "result": "updated",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": false
}

Здесь ответ показывает, что запрос был успешным, но когда я снова вижу ту же запись, я не получаю обновленный ответ.


Ответы:


1

Вы не передаете идентификатор здесь

POST test/users/id/_update 
04.08.2017
  • этот формат запроса не работает со сценарием, мы зацикливаем все значения и сопоставляем их в самом запросе, поэтому приведенное выше вызовет ошибку. 04.08.2017
  • _id:_update, _version:28, вы обновляете его по id _update, 04.08.2017
  • Это запрос на обновление, поэтому для этого нужно использовать метод POST, GET не подойдет. 04.08.2017
  • вы должны передать идентификатор в POST, 3985882, POST test/users/3985882/_update 04.08.2017
  • Я пробовал приведенные выше предложения, которые вы дали, но они не работают с моим скриптом, даже не предоставляя идентификатор 04.08.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..