我看到很多问题,但没有解决我的问题。我使用elasticsearch搜索查询json使用spring resttemplate搜索我的数据。请帮忙。
我在asyntask android
中这样做@Override
protected List<JobPosts> doInBackground(Object[] objects) {
List list = null;
try {
SearchForm searchForms = (SearchForm) objects[0];
String searchJson="";
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.POST, request, JobPosts[].class);
JobPosts[] jobPosts = response.getBody();
Log.d("location", "after exchange");
list = Arrays.asList(jobPosts);
} catch (Exception e) {
Log.d("location", e.getMessage());
}
我得到了这个例外
Caused by: org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:76)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:524)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:481)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:415)
at in.thoughtsmith.jink.MapsActivity$SearchJob.doInBackground(MapsActivity.java:689)
at in.thoughtsmith.jink.MapsActivity$SearchJob.doInBackground(MapsActivity.java:647)
at android.os.AsyncTask$2.call(AsyncTask.java:292)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1115)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:590)
at java.lang.Thread.run(Thread.java:818)
答案 0 :(得分:0)
您的查询searchJson无效JSON。我用{}:
包围了它String searchJson="{\"query\":{\"bool\":{\"must\":[{\"match\":{\"mandatorySkills.skillName\":\"j2ee\"}}],\"filter\":[{\"geo_distance\":{\"distance\":\"50km\",\"location\":{\"lat\":19.1237818,\"lon\":72.8907772}}},{\"range\":{\"minimumExperience\":{\"lte\":6}}},{\"range\":{\"maximumExperience\":{\"gte\":6}}}]}}}";
答案 1 :(得分:0)
我遇到了同样的问题。异常消息不是很有帮助。我必须做一个
e.getResponseBodyAsString()
其中e
是例外。我发现了详细的错误消息。你会看到如下错误:
{"errors":[{"code":"VALIDATION_FAILURE","source":{"pointer":"employee/attributes/child[0].role"},"detail":"... is invalid"}]}