当前位置: 首页 > news >正文

建立一个公司的网站吗合肥序曲网站建设公司怎么样

建立一个公司的网站吗,合肥序曲网站建设公司怎么样,成都网站设计开发公司,国税网站建设管理注意#xff01;#xff01;#xff01;博主只在测试环境试了一下#xff0c;没有发到生产环境跑。因为代码还没写完客户说不用弄了( •̩̩̩̩#xff3f;•̩̩̩̩ ) 也好#xff0c;少个功能少点BUG 使用from size的时候发现存在max_result_window10000的限制…注意博主只在测试环境试了一下没有发到生产环境跑。因为代码还没写完客户说不用弄了( •̩̩̩̩•̩̩̩̩ ) 也好少个功能少点BUG 使用from size的时候发现存在max_result_window10000的限制于是研究使用别的方法最终想出个歪招来实现深度分页跳页。 1、三种分页方式比较 2、实现过程 BaseEsMapper构建查询条件RestHighLevelClient实现scroll大分页滚动查询判断是否跨页如果跨页滚动拿到两页数据根据前端分页参数进行数据截取返回 3、实现代码 引入依赖 dependencygroupIdorg.dromara.easy-es/groupIdartifactIdeasy-es-boot-starter/artifactIdversion2.0.0/version /dependency dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-client/artifactIdversion7.6.2/version /dependency dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion7.6.2/version /dependencySearchResult import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import lombok.Data; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors;Data public class SearchResultT implements Serializable {private int total;private ListDocBaseEntityT source new ArrayList();private JSONObject aggregations;private String scrollId;public void addData(DocBaseEntityT obj){source.add(obj);}public ListT getDatas(){return source.stream().map(DocBaseEntity::getDatas).collect(Collectors.toList());}public void addDatas(ListDocBaseEntityT objs){source.addAll(objs);}public void setTotal(Object total){this.total Integer.parseInt(String.valueOf(total));}public JSONObject toJSONObject(){return JSONUtil.parseObj(this,true);} }DocBaseEntity import cn.hutool.json.JSONObject; import lombok.Data; import org.elasticsearch.search.SearchHit; import java.io.Serializable;Data public class DocBaseEntityT implements Serializable {private String _index;private String _type;private String _id;private T datas;public DocBaseEntity(SearchHit data) {this._index data.getIndex();this._type data.getType();this._id data.getId();}public DocBaseEntity(JSONObject jsonHits){this._index jsonHits.getStr(_index);this._type jsonHits.getStr(_type);this._id jsonHits.getStr(_id);}public T getDatas(){return datas;}}RestClientConfig import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class RestClientConfig {Value(${elasticsearch.clientIps})private String clientIps;Value(${elasticsearch.httpPort})private int httpPort;Value(${elasticsearch.username})private String username;Value(${elasticsearch.password})private String password;private HttpHost[] getHttpHosts(String clientIps, int esHttpPort) {String[] clientIpList clientIps.split(,);HttpHost[] httpHosts new HttpHost[clientIpList.length];for (int i 0; i clientIpList.length; i) {httpHosts[i] new HttpHost(clientIpList[i], esHttpPort, http);}return httpHosts;}/*** 创建带HTTP Basic Auth认证rest客户端*/Beanpublic RestHighLevelClient restHighLevelClient() {CredentialsProvider credentialsProvider new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));return new RestHighLevelClient(RestClient.builder(getHttpHosts(clientIps, httpPort)).setHttpClientConfigCallback((HttpAsyncClientBuilder httpAsyncClientBuilder) - httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider)));} } 滚动查询方法 Autowired private RestHighLevelClient restHighLevelClient;/*** 滚动查询* param indexName* param pageNo* param pageSize* param scrollId* param resultObj* param wrapper* param T* return* throws IOException*/ public T SearchResultT scrollSearchElasticSearchDatas(String indexName,int pageNo,int pageSize,String scrollId,ClassT resultObj,LambdaEsQueryWrapperES实体类Bean wrapper) throws IOException {SearchSourceBuilder searchSourceBuilder rdsBookCommonDetailEsMapper.getSearchSourceBuilder(wrapper);searchSourceBuilder.size(pageSize);SearchRequest searchRequest new SearchRequest(indexName);searchRequest.source(searchSourceBuilder);//设定scroll失效时长Scroll scroll new Scroll(TimeValue.timeValueMinutes(3));searchRequest.scroll(scroll);SearchResponse searchResponse null;if(StrUtil.isEmpty(scrollId)){searchResponse executSearch(searchRequest);String tempscrollId searchResponse.getScrollId();SearchScrollRequest searchScrollRequest new SearchScrollRequest(tempscrollId);searchScrollRequest.scroll(scroll);for (int i 0; i (pageNo -1); i) {searchResponse scrollSearch(searchScrollRequest);}scrollId tempscrollId;}else {SearchScrollRequest searchScrollRequest new SearchScrollRequest(scrollId);searchResponse scrollSearch(searchScrollRequest);}//构建结果SearchResultT result createSearchResult(searchResponse,resultObj);result.setScrollId(scrollId);return result; }/*** 执行查询*/ private SearchResponse executSearch(SearchRequest searchRequest) {SearchResponse searchResponse null;try{searchResponse restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);}catch(Exception e){//异常处理}return searchResponse; }/*** 滚动查询执行* param searchScrollRequest* return*/ private SearchResponse scrollSearch(SearchScrollRequest searchScrollRequest){SearchResponse searchResponse null;try{searchResponse restHighLevelClient.scroll(searchScrollRequest,RequestOptions.DEFAULT);}catch(Exception e){//异常处理}return searchResponse; }/*** 构建目标结果* param response 返回参数* param resultObj 类对象* param T* return*/ private T SearchResultT createSearchResult(SearchResponse response,ClassT resultObj){SearchResultT resultMap new SearchResult();SearchHit[] datas response.getHits().getHits();for(SearchHit data:datas){DocBaseEntityT temp new DocBaseEntity(data);temp.setDatas(JSONUtil.toBean(JSONUtil.parseObj(data.getSourceAsMap()),resultObj));resultMap.addData(temp);}resultMap.setTotal(response.getHits().getTotalHits().value);return resultMap; }/*** 关闭scroll* param scrollId* throws IOException*/ private void clearScrollSession(String scrollId) throws IOException {if (scrollId ! null) {ClearScrollRequest clearScrollRequest new ClearScrollRequest();clearScrollRequest.addScrollId(scrollId);ClearScrollResponse clearScrollResponse restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);clearScrollResponse.isSucceeded();} }使用 LambdaEsQueryWrapperES实体类Bean wrapper new LambdaEsQueryWrapper(); wrapper.eqxxx ...构建各种查询条件 // 游标id String scrollId ; // 第一次查询 SearchResultES实体类Bean firstSearchResult null; // 第二次查询 SearchResultES实体类Bean secondSearchResult null; // 每次滚动查询5000条数据根据前端传的分页参数决定要滚动到哪一页 int maxPage ((searchCommonDetaiVo.getCurrentPage() * searchCommonDetaiVo.getPageSize()) / 5000) 1; try {firstSearchResult scrollSearchElasticSearchDatas(IndexName, maxPage, 5000, scrollId, ES实体类Bean.class, wrapper);scrollId firstSearchResult.getScrollId(); } catch (IOException e) {e.printStackTrace(); } // 判断是否跨页 if (searchCommonDetaiVo.getPageSize() (searchCommonDetaiVo.getCurrentPage() * searchCommonDetaiVo.getPageSize()) % 5000) {try {secondSearchResult scrollSearchElasticSearchDatas(IndexName, maxPage-1, 5000, scrollId, ES实体类Bean.class, wrapper);} catch (IOException e) {e.printStackTrace();} } // TODO 根据前端分页参数截取数据返回 try {clearScrollSession(scrollId); } catch (IOException e) {log.info(游标清理失败);e.printStackTrace(); }
http://www.hkea.cn/news/14264208/

相关文章:

  • 保健品网站模板网站降权后 换域名
  • 最大的网站建设公司专业的龙岗网站建设
  • 有哪些网站可以免费做推广优化大师免安装版
  • 英文网站建设图片免费微信h5页面制作
  • 加强网站网络安全建设大连旅游网站建设大概多钱
  • 电商平台网站开发过程企业网址搭建
  • 万站群cms电商平台app大全
  • 中国旅游网站模板硬件开发有哪些方向
  • 宁波网站建设ysdshwordpress 4
  • 广源建设集团网站官网设计多少钱
  • 一起作做业网站wordpress相册投票插件
  • 青岛网站设计公司电话上杭县建设局网站
  • 有什么做衣服的网站吗支付网站设计
  • 建网站比较好wordpress app页面模板
  • 网站开发设计图片wordpress双栏主题开源
  • 信誉好的武进网站建设重庆做网站 哪个好些嘛
  • 云主机 小型网站superstore wordpress下载
  • 优化网站建设价格正能量不良网站免费软件下载
  • 公司企业网站建设的建站流程解析网站设计模版免费建站
  • 做网站现在要多少钱怎么去做网络推广
  • 求职网站网页模板下载网络游戏名字
  • 网站建设建站网易互客有什么做论文的网站
  • 深圳网站建设 工作室钓鱼网站怎么做
  • 海宏集团网站建设方案电子商务网站建设方面的论文
  • linux 做网站数据库网站的图片大小规定
  • 北京网站建设哪里好备案 网站名称 怎么改
  • 网站上的幻灯片如何做修改数据库密码 进不了网站后台
  • 怎么做营销型网站设计做网站必须租服务器吗
  • 郑州做网站 艾特泰安市住房和城乡建设局网站
  • 奢做品二手 哪个网站好建网站公司哪里好