如何在Java中使用ElasticsearchRepository使用Elasticsearch分页实现逻辑

问题描述

是否可以使用从PagingAndSortingRepository扩展的ElasticsearchRepository。这允许对分页和排序的内置支持。 但是我无法将实现更改为使用ElasticsearchRepository。我只想知道如何申请:

  1. 如何使用帖子搜索
  2. 如何使用主要提供Search查询的esQuery 字符串esQuery = String.format(searchTextQuery,startDate,endDate,formattedQueries);
  3. 如何使用如下所示的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 (将#修改为@)