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

静态网页模板免费下载的网站北京seo营销培训

静态网页模板免费下载的网站,北京seo营销培训,做网站的公司热线电话,怎么在手机上设计网站一、scroll说明和使用场景 scroll的使用场景:大数据量的检索和操作 scroll顾名思义,就是游标的意思,核心的应用场景就是遍历 elasticsearch中的数据; 通常我们遍历数据采用的是分页,elastcisearch还支持from size的…

一、scroll说明和使用场景

scroll的使用场景:大数据量的检索和操作

scroll顾名思义,就是游标的意思,核心的应用场景就是遍历 elasticsearch中的数据;

通常我们遍历数据采用的是分页,elastcisearch还支持from size的方式进行分页查询,使用 from and size 的深度分页,比如说 ?size=10&from=10000,因为 100,000 排序的结果必须从每个分片上取出并重新排序最后返回 10 条。这个过程需要对每个请求页重新进行提取+排序,效率很低,消耗很大,所以默认的最大可分页的数据是10000,超过10000是不建议的;

使用

通过在url末尾带上scroll=1m表示开启一个游标,1m表示游标的有效期为1分钟

POST /record/_search?scroll=1m
{"from": 0,"size": 20
}

返回结果中会把scroll的id带上,再次查询的时候,直接用scroll id查询即可

POST /_search/scroll
{"scroll" : "1m", "scroll_id" : "FGluY2x1ZGVfY29udGV4dF91dWlkDnF1ZXJ5VGhlbkZldGNoAhZuYmpMbVpwWFRUMnNFMUFFSHlSMHB3AAAAAALBy_0WUWxrNTRTaWNUcy1sOHQ0VUo5dzF6dxZoemFkZTlMeFQ4MmoyOW5SUG8ybE53AAAAAAN6ip8WMmk5TWZlQ21RQnFsNURwaXRzSGhCdw==" 
}

二、基于ElasticsearchRestTemplate的实现

这里我们定义了一个template如下,主要作用就是实现一个基于scroll的数据遍历模板,屏蔽开启scroll 以及 scroll遍历所有数据,通过Consumer<T>钩子函数进行数据处理

import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchScrollHits;
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;import java.util.List;
import java.util.concurrent.*;/*** scrollTemplate 模板,用于遍历整个Index的数据* @author xiuzhu* @Date 2023/7/28 13:12*/
@Slf4j
public class ElasticSearchScrollTemplate<T> {ExecutorService executorService = new ThreadPoolExecutor(1, 4,30,TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>(5),Executors.defaultThreadFactory(),new ThreadPoolExecutor.CallerRunsPolicy());ElasticsearchRestTemplate elasticSearchRestTemplate;Class<T> cls;String indexName;public ElasticSearchScrollTemplate(ElasticsearchRestTemplate template,Class<T> cls,String indexName) {this.elasticSearchRestTemplate = template;this.cls = cls;this.indexName = indexName;}@FunctionalInterfacepublic interface Consumer<T> {public void accept(List<T> objects);}public void execute(Consumer<T> consumer) {//构建查询条件NativeSearchQueryBuilder query = new NativeSearchQueryBuilder();BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();query.withPageable(PageRequest.of(0, 300));query.withQuery(queryBuilder);//保留0.5分钟long scrollTimeInMillis = 30*1000;IndexCoordinates recordIndex = IndexCoordinates.of(indexName);SearchScrollHits<T> hits = elasticSearchRestTemplate.searchScrollStart(scrollTimeInMillis, query.build(), cls, recordIndex);// scrollIdString scrollId = hits.getScrollId();List<T> recordEntityList = hits.stream().map(SearchHit::getContent).toList();long total = 0L;log.info("================ began scroll index={} ====================", indexName);executorService.submit(()->{consumer.accept(recordEntityList);});total = total + recordEntityList.size();log.info("================  has scroll index={} total={} ====================", indexName, total);while (!hits.isEmpty()) {hits = elasticSearchRestTemplate.searchScrollContinue(scrollId, scrollTimeInMillis, cls, recordIndex);List<T> entities = hits.stream().map(SearchHit::getContent).toList();executorService.submit(()->{consumer.accept(entities);});total = total + entities.size();try {//给系统留GC时间,不然容易内存溢出Thread.sleep(300);} catch (InterruptedException e) {log.error("sleep error", e);}log.info("================  has scroll index={} total={} ====================", indexName, total);}log.info("================ end scroll index={} ====================", indexName);}
}

使用参考:

@Resource(name = "elasticSearchRestTemplate")ElasticsearchRestTemplate elasticsearchRestTemplate;new ElasticSearchScrollTemplate<>(elasticsearchRestTemplate,RecordEntity.class,"record")).execute((entities)->{entities.forEach(item->{//这里进行数据的处理,比如修改数据recordEntityService.save(item);log.info("tag update success record={} api={}", item.getId());});});

本文由mdnice多平台发布

http://www.khdw.cn/news/59376.html

相关文章:

  • 福州网站建设推进源码网站
  • 网站建设联系方式网推项目
  • 动漫网页设计图片山西网络营销seo
  • 公司做网站建设百度网络营销中心
  • 深圳微信网站开发seo招聘职责
  • 网站文章怎么更新时间企业网站推广公司
  • 大气的房产网站苏州网站建设费用
  • 网站引导页面设计企业营销策划实训报告
  • 做ios试玩推广网站建一个网站需要多少钱?
  • 郑州网站建设最独特seo关键词优化怎么做
  • 襄阳做网站公司哪家好迈步者seo
  • 在线可以做翻译的网站广州seo运营
  • 江西网站开发哪家好广州网络推广哪家好
  • 公司网站做优化优化营商环境的措施建议
  • 网站响应式首页模板下载济南最新消息今天
  • 做棋牌游戏网站赚钱吗网店推广运营策略
  • 网站活动推广方案seo技术培训宁波
  • 网站开发常用的技术电商数据统计网站
  • 做公众号首图的设计网站广东seo推广贵不贵
  • 网站做导航条网站新域名查询
  • 做的网站如何发布会自己做网站需要什么条件
  • 有域名后怎么做网站百度推广上班怎么样
  • 做静态网站怎样让图片自己切换东莞做好网络推广
  • 如何使用爱站网广告推广免费平台
  • 福州个人建站模板网络黄页推广软件哪个好
  • 网站关键词 公司黄页88网推广服务
  • 适合个人做外贸的网站跨境电商网站
  • php网站建设的安全性研究优化服务平台
  • wordpress 36kr安卓优化大师下载
  • 南通网站建设招聘手机访问另一部手机访问文件