docs: public Pagination listPage(int pageNumber, int pageSize, String keyword, boolean highlight, boolean explain, String sortName, String sortOrder) {
          Pagination page = new Pagination();
          page.setPageNo(pageNumber);
          page.setPageSize(pageSize);
          try {
              BoolQueryBuilder query = QueryBuilders.boolQuery();
              //根据名称查询
              if (Strings.isNotBlank(keyword)) {
                  BoolQueryBuilder keywordQuery = QueryBuilders.boolQuery();
                  keywordQuery.should(QueryBuilders.queryStringQuery(keyword).field("name", 7).field("email", 3));
                  query.must(keywordQuery);
              }
              //日期起
  //            if (Strings.isNotBlank(startDate)) {
  //                query.must(QueryBuilders.rangeQuery("createAt").gte(DateUtil.getTime(startDate + " 00:00:00")));
  //            }
              //日期至
  //            if (Strings.isNotBlank(endDate)) {
  //                query.must(QueryBuilders.rangeQuery("createAt").lte(DateUtil.getTime(endDate + " 23:59:59")));
  //            }
              SearchRequestBuilder srb = elasticsearchUtil.getClient().prepareSearch(indexName)
                      .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                      .setTypes(indexType)
                      .setQuery(query)
                      //分页
                      .setFrom((pageNumber - 1) * pageSize).setSize(pageSize)
                      //是否按匹配度排序
                      .setExplain(explain);
  
              if (highlight) {
                  HighlightBuilder highlightBuilder = new HighlightBuilder().field("*").requireFieldMatch(false);
                  highlightBuilder.preTags("<span style=\"color:red\">");
                  highlightBuilder.postTags("</span>");
                  srb.highlighter(highlightBuilder);
              }
  //            if (Strings.isNotBlank(sortName)&!explain) {
  //                String[] sortNames = StringUtils.split(sortName, ",");
  //                if ("asc".equalsIgnoreCase(sortOrder)) {
  //                    for (String s : sortNames) {
  //                        srb.addSort(s, SortOrder.ASC);
  //                    }
  //                } else {
  //                    for (String s : sortNames) {
  //                        srb.addSort(s, SortOrder.DESC);
  //                    }
  //                }
  //            }
              log.debug("srb:::\r\n" + srb.toString());
              SearchResponse response = srb.execute().actionGet();
              SearchHits hits = response.getHits();
              page.setTotalCount((int) hits.getTotalHits());
              List<Map<String, Object>> list = new ArrayList<>();
              hits.forEach(searchHit -> {
                  Map<String, Object> source = searchHit.getSourceAsMap();
                  Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
                  //name高亮
                  HighlightField nameField = highlightFields.get("name");
                  if (nameField != null) {
                      Text[] fragments = nameField.fragments();
                      String tmp = "";
                      for (Text text : fragments) {
                          tmp += text;
                      }
                      source.put("name", tmp);
                  }
                  list.add(source);
              });
              page.setList(list);
          } catch (Exception e) {
              e.printStackTrace();
          }
          return page;
      }