Docker 컨테이너의 bash 스크립트에서 curl 명령을 실행할 때 압축기 감지 문제


2

curlDocker 컨테이너 내에서 bash 스크립트를 사용하여 실행하고 싶습니다 .

이것은 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", "eason": "파싱 실패"}], "type": "mapper_parsing_exception", "eason": "파싱 실패", "caused_by": { "type": "not_x_content_exception", "이유": "압축기 감지는 일부 xcontent 바이트 또는 압축 된 xcontent 바이트에서만 호출 할 수 있습니다"}}

그러나 스크립트를 다음과 같이 변경하면

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

그런 다음 오류없이 작동합니다.

그렇다면 왜 json 파일을 좋아하지 않습니까 ???

최신 정보:

의견에서 제안한대로 @뒤에 추가 usr/하면 다음 오류가 발생합니다.

경고 : 파일에서 데이터를 읽을 수 없습니다. 경고 : "usr / share / elasticsearch / data / test.json", 빈 경고 : POST가 생성됩니다. % Total % Received % Xferd Average Speed ​​Time
Time Time Dload Upload Total Spent Left Speed ​​100 201100201100740------- :--:-:--:-:- 738 { "error": { "root_cause": [{ "type": "mapper_parsing_exception", "eason": "구문 분석에 실패했습니다. 문서가 비어 있습니다"}], "type": "mapper_parsing_exception", "eason": " 파싱하지 못했습니다. 문서가 비어 있습니다 "},"상태 ": 400}

파일 test.json:

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

이것을보십시오 -d @usr/share/elasticsearch/data/test.json. @
Fazlin

답변:


1

json인수로 전달 된 파일 curl -d앞에는 @기호 가 와야합니다 .

curl -X POST http://localhost:9200/tests/test -d @usr/share/elasticsearch/data/test.json
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.