elasticsearch에서 failed to put mappings on indices (NPE) 가 발생하면 용도에 맞는 json 요청이라는 뜻이다.

elasticsearch가 친절하게 에러 메시지를 전달해주는 것이 없어서(결과적으로 실패했다는 로그) 조금 혼란을 줄 수 있긴 한데..

몸으로 때우는 수밖에 없는 것 같다. 


[DEBUG][action.admin.indices.mapping.put] [Prototype] failed to put mappings on indices [[my_index]], type [my_type]

java.lang.NullPointerException

    at org.elasticsearch.common.xcontent.XContentFactory.xContent(XContentFactory.java:137)

    at org.elasticsearch.common.xcontent.XContentHelper.convertToMap(XContentHelper.java:113)



클라이언트에서는 아래와 같은 에러가 발행한다.

{"error":"RemoteTransportException[[olive047][inet[/172.17.48.122:9300]][indices:admin/mapping/put]]; nested: NullPointerException; ","status":500}



해결을 위해서는 setting와 mapping 관련 url이 맞는지 확인한다.

* /_setting url 에 mapping json을 요청했는지, 

* /_mapping url에 setting json을 요청했는지.

* /_mapping url에 setting, mapping json을 요청했는지.

* /{index_name} 에 setting, mapping 을 잘 입력해서 정상적으로 요청했는지 (<-- 이거 정상)




test.json에 setting와 mapping 을 포함한 json 파일일 때, 아래와 같은 url 요청시에 failed to put mappings on indices (NPE)  에러 발생한다.

$ curl -s -XPUT http://localhost:9200/suggest_test/type/_mapping -d test.json





test.json에 setting와 mapping 을 포함한 json 파일일 때, 아래와 같은 url 요청시에 문제가 없다.

$ curl -s -XPUT http://localhost:9200/suggest_test -d test.json


Posted by '김용환'
,