我在尝试找到正确的语法以将文档按类型推送到弹性搜索索引时遇到严重问题。
我使用的代码是:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
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();
}
}
)
它正在点击服务器,因为我收到400个请求,但我不能让它继续使用它。
{
@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);
有些人可以告诉我正确的语法是什么,使用java代码,还是告诉我我做错了什么?
我认为正确的语法是:
http:// url | index_name |类型|身体?
编辑:我已经搜索了SO,有弹性的java api,谷歌群组和互联网3天,没有运气!任何事都非常感谢!12-14 16:19:04.533 12642-13089/? E/Volley﹕ [41831]
BasicNetwork.performRequest: Unexpected response code 400 for URL
结果:VOLLEY ERROR:com.android.volley.ServerError
有什么想法吗?
答案 0 :(得分: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();
现在一切正常,感谢您的帮助。