2

Я хочу выполнить curl используя скрипт bash внутри контейнера Docker.

Это мой скрипт-файл script.sh который я добавил в контейнер:

curl -X POST http://localhost:9200/tests/test -d usr/share/elasticsearch/data/test.json

Содержимое файла json следующее (идея добавить \ исходит из этой темы):

"{\"id\":\"978-1-60741-503-9\",\"doi\":\"\"}"

Когда я вхожу в работающий Docker-контейнер и выполняю bash myscript.sh , результат будет следующим:

{"error":{"root_cause":[{"type":"mapper_parsing_exception", "reason":"не удалось разобрать"}], "type":"mapper_parsing_exception", "reason":"не удалось проанализировать", "reason_by":{"type":"not_x_content_exception", "reason":"Обнаружение компрессора может быть вызвано только для некоторых байтов xcontent или сжатых байтов xcontent"}}

Однако, если я изменю скрипт на этот:

curl -X POST http://localhost:9200/tests/test -d "{\"id\":\"978-1-60741-503-9\",\"doi\":\"\"}"

тогда это работает без ошибок.

Итак, почему ему не нравится файл JSON ???

ОБНОВИТЬ:

Когда я добавляю @ позади usr/ как предлагается в комментариях, я получаю следующую ошибку:

Предупреждение: не удалось прочитать данные из файла. Предупреждение: «usr /share /asticsearch /data /test.json», это пустое предупреждение: POST. % Всего% Получено% Xferd Средняя скорость Время
Время Время Текущая загрузка Загрузка Всего израсходовано Левая скорость 100 201 100 201 0 0 740 0 -: -: - -: -: - -: -: - 738 {"error": {"root_cause ": [{" type ":" mapper_parsing_exception "," reason ":" не удалось проанализировать, документ пуст "}]," type ":" mapper_parsing_exception "," reason ":" не удалось проанализировать, документ пуст "} , "статус": 400}

Файл test.json:

"{\"id\":\"123\",\"field\":\"456\"}"

1 ответ1

1

Файл json передаваемый в качестве аргумента curl -d должен начинаться с символа @ .

curl -X POST http://localhost:9200/tests/test -d @usr/share/elasticsearch/data/test.json

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .