2015-12-14 263 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(); 

一切工作,我现在想,感谢您的帮助。

相关问题