Java 如何使用SpringRESTTemplate在elasticsearch中使用日期范围进行滚动和筛选?
我正在尝试使用ElasticSearchRESTAPI滚动结果,并根据日期进行过滤。使用cUrl,下面的语句给出了所需的结果:Java 如何使用SpringRESTTemplate在elasticsearch中使用日期范围进行滚动和筛选?,java,spring,
elasticsearch,Java,Spring,
elasticsearch,我正在尝试使用ElasticSearchRESTAPI滚动结果,并根据日期进行过滤。使用cUrl,下面的语句给出了所需的结果: curl -d '{"query":{"range":{"timestamp":{"gte":"2017-01-27T13:23:11"}}}}' "http://127.0.0.1:9201/logs-test*/_search?pretty=true&size=5&scroll=1m" 但是,在使用SpringRestTemplate发出请求时,我
curl -d '{"query":{"range":{"timestamp":{"gte":"2017-01-27T13:23:11"}}}}' "http://127.0.0.1:9201/logs-test*/_search?pretty=true&size=5&scroll=1m"
但是,在使用SpringRestTemplate发出请求时,我无法获得相同的行为,因为我得到了所有结果,并且没有应用任何过滤。这是我的Java代码中的内容:
// content type
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
// header
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String body = "{\"query\":{\"range\":{\"timestamp\":{\"gte\":\""+ sdf.format(dateObject) +"\"}}}}";
HttpEntity<String> entity = new HttpEntity<String>(body, headers);
// request
ResponseEntity<String> result =
restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
//内容类型
List acceptableMediaTypes=new ArrayList();
acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
//标题
HttpHeaders=新的HttpHeaders();
headers.setAccept(acceptableMediaTypes);
SimpleDataFormat sdf=新的SimpleDataFormat(“yyyy-MM-dd'T:HH:MM:ss”);
字符串正文=“{\'query\':{\'range\':{\'timestamp\':{\'gte\':\”“+sdf.format(dateObject)+“\”}”;
HttpEntity实体=新的HttpEntity(主体、标题);
//请求
响应结果=
交换(url,HttpMethod.GET,entity,String.class);
知道我在这里遗漏了什么吗?如果使用
HttpMethod.POST
会发生什么?谢谢你,Val,在这种情况下,Elasticsearch似乎同时接受GET和POST请求。我现在让它工作了。是的,但在发送有效载荷时使用POST是一个很好的实践。