2015-12-14 264 views
0

我遇到了嚴重問題,試圖找到將文檔按類型推送到elasticsearch索引的正確語法。Elasticsearch索引文檔

使用要做到這一點我的代碼IM是:

String url = "https://my_url/my_index_name"; 

StringRequest postRequest = new StringRequest(Request.Method.POST, url, 
    new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonResponse = new JSONObject(response).getJSONObject("form"); 
       String site = jsonResponse.getString("site"), 
         network = jsonResponse.getString("network"); 
       Log.d("Site: ", site + "\nNetwork: "+network); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
       Log.e("JSON EXCEPTION", e.toString()); 
      } 
     } 
    }, 
    new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      error.printStackTrace(); 
     } 
    } 

)

{ 
@Override 
protected Map<String, String> getParams() 
{ 
    Map<String, String> params = new HashMap<>(); 
    // the POST parameters: 
    params.put("type", "type_name");; 
    params.put("field1", field1_value); 
    params.put("field2", field2_value); 
    params.put("field3", field3_value); 
    params.put("field4", field4_value); 
    params.put("field5", field5_value); 
    return params; 
} 
}; 

Volley.newRequestQueue(this).add(postRequest); 

它擊中服務器,當我越來越400個請求,但我只是不能得到它去的使用這個。

12-14 16:19:04.533 12642-13089/? E/Volley﹕ [41831] 
BasicNetwork.performRequest: Unexpected response code 400 for URL 

可以啓發我什麼是正確的語法,使用java代碼,或告訴我我做錯了什麼?

我認爲正確的語法是:

http:// url | index_name |鍵入|身體 ?

編輯:我已經搜索了SO,彈性java api's,谷歌組和所有的互聯網3天現在,沒有運氣!任何東西都非常感謝!

new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        error.printStackTrace(); 
        Log.e("VOLLEY ERROR", "" + error.toString()); 
       } 
      } 

結果:排ERROR:com.android.volley.ServerError

任何想法?

+0

400是一個「錯誤的請求」響應代碼,您需要在返回的代碼中找到確切的錯誤消息。該錯誤消息(它在那裏,檢查日誌)會告訴你到底你的請求的部分彈性搜索不明白 –

+0

任何想法我可以做到這一點?我已成功查詢索引並檢索logcat中的映射。 – mangledBadger

+0

也許在異常處理程序error.getMessage()? VolleyError應該提供對完整錯誤消息的訪問。 –

回答

0

好吧,所以我設法修復它。

有兩個問題:

第一個問題是與這是網址:

String url = "https://my_url/my_index_name"; 

它應該是:

String url = "https://my_url/my_index_name/type%20-d"; 

第二個問題是與實際參數:

params.put("type", "type_name");; 
params.put("field1", field1_value); 
params.put("field2", field2_value); 
params.put("field3", field3_value); 
params.put("field4", field4_value); 
params.put("field5", field5_value); 
return params; 

我換了這一點爲:

String urlParameters = 
       "{" + 
       "  \"field\": \" + field_value \"," + 
       "  \"field\": \" + field_value \"," + 
       "  \"field\": \" + field_value \"," + 
       "  \"field\": \" + field_value \"," + 
       "  \"field\": \" + field_value \"" + 
       "}"; 

而且發佈者:

DataOutputStream wr = new DataOutputStream(httpConn.getOutputStream()); 
     wr.writeBytes(urlParameters); 
     wr.flush(); 
     wr.close(); 

一切工作,我現在想,感謝您的幫助。

相關問題