Как добавить символ в строку вasticsearch? - PullRequest
1 голос
/ 16 марта 2020

Я пытаюсь написать преобразование при использовании _reindex API. Идея состоит в том, что я беру существующий индекс, я хочу переиндексировать его и добавить число в конец нескольких строковых параметров ha sh в процессе (тип string). Это жизнеспособное решение для этого?

POST <index>/<index_type>/_reindex
{
  "source": {
    "index": "<index_name>"
  },
  "dest": {
    "index": "<new_index_name>",
  },
  "script": {
        "source": "ctx._source.bene_acc_no += '21' ",
        "source" : "ctx._source.orig_acc_no += '21' ",
        "source" : "ctx._source.owner_acc_no += '21' "
  }
}

Или я могу просто использовать "source" : "ctx._source.owner_acc_no++"?

Наконец, мне нужно беспокоиться о сопоставлении с переиндексацией или я могу предположить, что это будет сделано автоматически при переиндексации.

Заранее спасибо.

1 Ответ

1 голос
/ 17 марта 2020

Reindex Api

Вы должны настроить индекс назначения перед вызовом _reindex. Reindex не копирует настройки из исходного индекса. Сопоставления, количество осколков, реплики и т. Д. Должны быть настроены заранее.

Если сопоставление нового индекса не создано до выполнения reindex api, сопоставление будет динамически создано ie data- Тип полей будет выведен из первого документа, который копируется. Так что лучше всего создать отображение до того, как рука

переиндексирует синтаксис

POST _reindex
{
  "source": {
    "index": "<source_index>"
  },
  "dest": {
    "index": "<destination_index>"
  },
  "script": {
      "source":"ctx._source.bene_acc_no += '21'; ctx._source.orig_acc_no += '21';ctx._source.owner_acc_no += '21'"
  }
}

Если bene_acc_no имеет тип text

ctx._source.bene_acc_no + = '21' добавится 21 после значения отл. если bene_acc_no = "20", то новым значением будет "2021"

Если значения представляют собой целые числа, хранящиеся в виде строки, и вы хотите sh увеличить значение, то вы можете использовать приведенный ниже скрипт "ctx._source.bene_acc_no = (Integer.parseInt (ctx._source.bene_acc_no) +1) .toString () "

Выше произойдет сбой, если bene_acc_no содержит символы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...