2017-02-15 72 views
0

嗨,我試圖在彈性搜索中使用spring RestTemplate搜索數據。 ElasticSearch有用戶名和密碼,我想通過json進行搜索。如何通過Json在彈性搜索中使用spring中的resttemplate進行搜索

我爲此編寫了代碼,但我沒有得到任何結果或例外。我這樣做是我生命中第一次,所以很抱歉如果有一些愚蠢的錯誤。

@Override 
    protected List<JobPosts> doInBackground(Object[] objects) { 
     List list = null; 

     try { 

      SearchForm searchForms = (SearchForm) objects[0]; 




      String plainCreds = "******:********"; 

      final String url = "*******"; 
      RestTemplate restTemplate = new RestTemplate(); 
      restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 

      HttpEntity<String> request = new HttpEntity<>(searchJson, headers); 
      Log.d("location", "before exchange"); 
      ResponseEntity<JobPosts[]> response = restTemplate.exchange(url, HttpMethod.GET, request, JobPosts[].class); 
      JobPosts[] jobPosts = response.getBody(); 

      Log.d("location", "after exchange"); 
      list = Arrays.asList(jobPosts); 


     } catch (Exception e) { 
      Log.d("location", e.getMessage()); 
     } 
+0

也許使用捲曲或REST客戶端插件(郵差,先進的REST客戶端,...)來驗證,如果你可以在代碼潛水之前到達Elasticsearch。 http:// localhost:9200 /是您的基本網址。但是我會推薦使用評論中提到的ES Java API。我已經從Spring數據轉換到本地API以及更好的支持 –

回答

1

與其他關係數據庫不同,您不需要Spring RestTemplate來查詢彈性數據庫。 ElasticSearch附帶內置的Java API庫。您直接使用這些函數來創建您的查詢並獲得結果。

檢出此鏈接。它有關於如何使用API​​的文檔。

Elastic Search Java API 5.1

0

我會建議使用ES Java API由Tanay提及。

設置您連接喜歡這個

//Create the ES clien 
org.elasticsearch.client.Client client; 

//Setup the connection. Make sure you use port 9300 and not 9200 here. 
client = new PreBuiltTransportClient(Settings.EMPTY) 
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), "9300")); 

//Interact with your index, for example getting an object by its ID 
GetResponse response = client.prepareGet("index", "type", "id") 
    .setOperationThreaded(false) 
    .get(); 

//Close the connection 
client.close(); 
相關問題