2017-09-14 4 views
0

우리는 봄 부팅시 탄성 검색 응용 프로그램을 개발 중입니다. 탄성 검색에서 제공하는 Java API 또는 Java Rest Client API는 사용할 수 없습니다. 대신 스프링 레스트 템플릿을 사용하여 탄성 작업을해야하지만 탄성은 나머지 클라이언트의 인덱스 요청을 수락하지 않는 것 같습니다. 우리는 "수용 할 수 없음"응답을 되돌려 받았습니다. 누군가가 우리에게 힌트 나 정보를 주면 정말 고맙습니다.탄성 검색을 위해 Spring Rest Client를 구현하는 방법은 무엇입니까?

탄성 버전 : 5.6

+1

지금 작성한 코드를 표시하십시오. ES 5.6에서는 [저수준 REST 클라이언트] (https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-low-usage-initialization)를 사용할 수 있습니다. html)은 다른 의존성없이 Apache의 HTTP 클라이언트를 감싸는 래퍼입니다. – Val

+0

아마도 당신은 HTTP 요청 헤더에'Content-Type' 헤더를 보내지 않을 것입니다. 가능한? – Val

답변

1

시도해보십시오. 그것은 HttpURLConnection을 사용하여 HTTP API를 통해 문서 인덱싱을 위해 나를 위해 작동합니다.

URL obj = new URL("http://localhost:9200/index/type"); 
String json = "{\n" + 
      " \"user\" : \"kimchy\",\n" + 
      " \"post_date\" : \"2009-11-15T14:12:12\",\n" + 
      " \"message\" : \"trying out Elasticsearch\"\n" + 
      "}"; 
HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

con.setRequestMethod("POST"); 
con.setDoInput(true); 
con.setDoOutput(true); 
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); 

OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); 
osw.write(json); 
osw.flush(); 
osw.close(); 

System.out.println(con.getResponseCode() + " : " + con.getResponseMessage()); 
if (con != null) 
    con.disconnect(); 

HttpURLConnection을 사용하여 간단한 검색 수행.

URL obj = new URL("http://localhost:9200/index/type/_search"); 
String json = "{\n" + 
       " \"query\": {\n" + 
       " \"match_all\": {}\n" + 
       " }\n" + 
       "}"; 
HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

con.setRequestMethod("GET"); 
con.setDoInput(true); 
con.setDoOutput(true); 
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); 

OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); 
osw.write(json); 
osw.flush(); 
osw.close(); 

BufferedReader br = new BufferedReader(new InputStreamReader((con.getInputStream()))); 

System.out.println("Response : " + br.readLine()); 

System.out.println(con.getResponseCode() + " : " + con.getResponseMessage()); 

if (con != null) 
    con.disconnect(); 
+0

간단한 요청 본문으로 검색하는 예제를 보여줄 수 있습니까? – Vikki

+1

내 대답이 업데이트되었습니다. 희망이 도움이됩니다. –

관련 문제