Миграция эластичных поисковых карт с завитком - PullRequest
0 голосов
/ 13 сентября 2018

Я бы хотел перенести отображение эластичного поиска для индекса, используя curl, передавая выходные данные сопоставления в curl.

Цель состоит в том, чтобы перенести или создать сопоставление для индекса на другом хосте.

Теперь я запускаю следующее:

curl -X GET "http://$SOURCE_HOSTNAME:9200/$SOURCE_INDEX/_mapping?pretty" | curl -X PUT "http://$DESTINATION_HOSTNAME:9200/$DESTINATION_INDEX/_mapping?pretty" -H 'Content-Type: application/json' -d "$(</dev/stdin)"

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

{
  "error" : {
    "root_cause" : [
      {
        "type" : "action_request_validation_exception",
        "reason" : "Validation Failed: 1: mapping type is missing;"
      }
    ],
    "type" : "action_request_validation_exception",
    "reason" : "Validation Failed: 1: mapping type is missing;"
  },
  "status" : 400
}

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

Та же проблема возникает при чтении непосредственно из файла json

1 Ответ

0 голосов
/ 13 сентября 2018

Есть две проблемы. Во-первых, результат, полученный в результате вызова GET $SOURCE_INDEX/_mapping, содержит сопоставление, но оно заключено в другое свойство, называемое исходным индексом.

Например, вызов GET _mapping вернет это:

{
   "your_index_name": {     <--- your mapping is wrapped within the source index name
      "mappings": {         <--- and also within the mappings structure
         "doc": {           <--- this is the structure you need when hitting the _mapping endpoint
            ...
         }
      }
   }
}

Вторая проблема заключается в том, что в целевом URL отсутствует имя типа сопоставления, т. Е. Должно быть $DESTINATION_INDEX/_mapping/$SOME_TYPE.

Итак, вам нужно:

  1. для указания типа отображения в целевом URL
  2. способ развернуть то, что вы получаете из исходного индекса. Вы можете сделать это, используя (например) jq легко, хотя
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...