2017-09-14 7 views
0

Nous développons une application de recherche élastique dans la botte à ressort. Nous ne pouvons pas utiliser l'API Java ou l'API Java Rest Client fournie par la recherche élastique. Au lieu de cela, nous devons faire des opérations en élastique en utilisant le modèle de repos de printemps, mais élastique ne semble pas accepter les demandes d'index du client de repos. Nous avons reçu la réponse «Non acceptable». J'apprécie vraiment si quelqu'un nous donne quelques conseils ou informations. Version élastique: 5.6Comment implémenter Spring Rest Client pour la recherche élastique?

+1

Veuillez montrer le code que vous avez maintenant. Et avec ES 5.6, vous pouvez utiliser le [client REST de bas niveau] (https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-low-usage-initialization. html) qui est simplement un wrapper autour du client HTTP d'Apache sans aucune autre dépendance. – Val

+0

Vous n'allez probablement pas envoyer l'en-tête 'Content-Type' dans vos en-têtes de requête HTTP. Possible? – Val

Répondre

1

Essayez ceci. Cela fonctionne pour moi pour Indexing Document via HTTP API en utilisant HttpURLConnection.

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(); 

Effectuer une recherche simple à l'aide de 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

Pouvez-vous montrer un exemple de recherche avec un corps de requête simple? – Vikki

+1

Mis à jour ma réponse. J'espère que cela pourra aider. –