问题描述
是否可以使用从PagingAndSortingRepository扩展的ElasticsearchRepository。这允许对分页和排序的内置支持。 但是我无法将实现更改为使用ElasticsearchRepository。我只想知道如何申请:
- 如何使用帖子搜索
- 如何使用主要提供Search查询的esQuery 字符串esQuery = String.format(searchTextQuery,startDate,endDate,formattedQueries);
- 如何使用如下所示的Post URI:
请求请求=新请求(“ GET”,“ /” + user.getUserId()+“ / _search”);
因此,对于以上所有内容,如何在ElasticsearchRepository中使用分页
以下是我的服务代码:
public List getResponses(zoneddatetime startDate,zoneddatetime endDate,String cat,FieldFilterVM filter,String query) throws IOException { User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); Request request = new Request("GET","/" + user.getUserId() + "/_search"); List<String> matchQueries = new ArrayList<>(); matchQueries.addAll(formatCategoryQuery(cat)); matchQueries.addAll(formatFilterQuery(filter,false)); if (query != null && query.length() > 0) { matchQueries.add(String.format(textFilterQuery,query)); } StringBuilder formattedQueries = new StringBuilder(); for (int i = 0; i < matchQueries.size(); i++) { formattedQueries.append(','); formattedQueries.append(matchQueries.get(i)); } String esQuery = String.format(searchTextQuery,startDate,endDate,formattedQueries); request.setJsonEntity(esQuery); Response response = elasticSearchService.getClient().getLowLevelClient().performRequest(request); String responseBody = IoUtils.toString(response.getEntity().getContent(),"UTF-8"); ObjectMapper mapper = new ObjectMapper(); Map map = mapper.readValue(responseBody,new TypeReference<Map>() { }); List matchedTextResponses = new ArrayList(); if (map != null) { List<Map> textResponses = (List<Map>) ((Map) map.get("hits")).get("hits"); for (Map textResponse : textResponses) { } } return matchedTextResponses; }
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)