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

html5网站源码sem竞价推广是什么

html5网站源码,sem竞价推广是什么,手机版官方网站的建设,上海建企业网站项目场景: 项目中需要把Mysql数据同步到ElasticSearch中 问题描述 数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据,本地测试也无法复现,后台程序也没有报错,一到正式环境就有问题,很崩溃 这里是批量操…

项目场景:

项目中需要把Mysql数据同步到ElasticSearch中


问题描述

数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据,本地测试也无法复现,后台程序也没有报错,一到正式环境就有问题,很崩溃

这里是批量操作的代码

private void bulk(List<IndexRequest> indexRequests) throws Exception {try {// 在这里可以对你获取到的批量结果数据进行需要的业务处理BulkProcessor bulkProcessor = BulkProcessor.builder((req, bulkListener) -> restHighLevelClient.bulkAsync(req, RequestOptions.DEFAULT, bulkListener),new BulkProcessor.Listener() {private int totalCount = 0;@Overridepublic void beforeBulk(long executionId, BulkRequest request) {}@Overridepublic void afterBulk(long executionId, BulkRequest request, BulkResponse response) {// 统计条数并输出信息int count = response.getItems().length;totalCount += count;log.info("批量操作 [{}] 成功执行了{}条请求,共处理了{}条数据", executionId, count, totalCount);}@Overridepublic void afterBulk(long executionId, BulkRequest request, Throwable failure) {log.error("数据处理失败,执行id为{},错误信息为:{}", executionId, failure);}}).setConcurrentRequests(esproperties.getThreadSize())/*并发请求的数量。默认为1。*/.setFlushInterval(TimeValue.timeValueSeconds(30)) // 固定30s必须刷新一次.setBulkSize(new ByteSizeValue(10L, ByteSizeUnit.MB)) // 5MB batch size.setBulkActions(esproperties.getBulkActions()) // 每次执行最多处理5000个请求.setBackoffPolicy(BackoffPolicy.exponentialBackoff(TimeValue.timeValueMillis(100), 3)).build();indexRequests.forEach(bulkProcessor::add);bulkProcessor.close();} catch (Exception e) {e.printStackTrace();throw new Exception(e);}}

原因分析:

当时想到的问题是这里是不是数据格式有问题,因为采用的是异步,就是错误了也不会影响到其它数据的插入

接着就定位到了这段代码,想想是不是哪里没有处理错误的数据信息,所以没有打印出来,果然发现了BulkResponse 这个类,是可以处理每个错误信息的,接着就优化了代码如下

其实只需要修改afterBulk 方法,遍历出现的异常就能够打印出导入不进去的错误信息

 @Override
public void afterBulk(long executionId, BulkRequest request, BulkResponse response) {// 统计条数并输出信息
// int count = response.getItems().length;
// totalCount += count;
//  log.info("批量操作 [{}] 成功执行了{}条请求,共处理了{}条数据", executionId, count, totalCount);if (response.hasFailures()){for (BulkItemResponse itemResponse : response) {if (itemResponse.isFailed()) {log.info("数据写入失败:错误信息为:{}",itemResponse.getFailureMessage());}}
// log.info("数据写入失败:{}",response.buildFailureMessage());}
}

解决方案:

接着修改代码后把新的包放上去,执行,终于找到了错误信息

下面是错误信息的截图
在这里插入图片描述

报错 Limit of total fields 1000 这里就能看出来,是字段数量大于1000了,因为我的是宽表,而之前创建的索引字段数量都是小于1000的,新的索引结构数量大于1000,找到问题就好办了

在kibana执行下面脚本修改字段限制,根据实际情况来,没有kibana就写出curl 请求
在这里插入图片描述

PUT 你的索引名/_settings
{"index": {"mapping.total_fields.limit": 2000}
}

总结

  1. 没有测试好宽表字段比较多的情况
  2. 写代码的时候以为很简单不会出现问题,所以日志也比较随便。
  3. 日常开发要打印好日志,它能够在出现错误的情况下,很快的帮我们定位出问题所在。
http://www.ritt.cn/news/17467.html

相关文章:

  • 网站的缩略图下载优化大师
  • 中小学生做的网站网站页面优化包括
  • 深圳做高端企业网站建设公司创建个人网站的流程
  • 社区网站建设工作职责中层管理者培训课程有哪些
  • 莱芜生活网系统优化软件排行榜
  • 贵阳市白云区官方网站广告公司推广软文
  • 小米wifi设置网址入口网站脚上起小水泡还很痒是怎么回事
  • 企业网站源码 asp昆山优化外包
  • 用wordpress建站之后如何优化站长统计工具
  • 做网站找什么公司推广赚钱的微信小程序
  • 建设工程业绩查询网站网络营销产品策略
  • 麻城网站建设公司培训课程有哪些
  • 汽车充电桩网站建设中企动力技术支持关键词挖掘工具
  • 东莞做网站需要避免这些因素seo 排名 优化
  • 二手图书交易网站建设本地建站软件有哪些
  • 做类似淘宝网站多少钱seo系统培训课程
  • 西安手机网站建设动力无限营销网址
  • 杭州手机网站制作无锡百度推广平台
  • 深圳建设商城网站东莞全网推广
  • 网站审核员做点啥长春免费网上推广
  • 找个兼职做网站的seo专业培训费用
  • 企业网站建设 法规淘宝站内推广方式有哪些
  • 怎么用思维导图做网站结构图百度指数关键词搜索趋势
  • 北京建设网站制作网络营销心得体会1000字
  • 哈尔滨做设计和网站的公司友情链接网
  • wordpress 获取作者信息成都关键词优化服务
  • 武汉网站建设网站开发网络的推广
  • 重庆网站设计好的公司福州seo兼职
  • wordpress网站有多大培训机构推荐
  • 高度重视政府网站建设管理工作点击精灵seo