ES 数据插入异常原因分析

这篇具有很好参考价值的文章主要介绍了ES 数据插入异常原因分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

24-01-23.15:50:18.635 [I/O dispatcher 1] WARN  org.elasticsearch.client.RestClient  - request [HEAD http://localhost:9200/alarm_msg?ignore_throttled=false&include_type_name=true&ignore_unavailable=false&expand_wildcards=open&allow_no_indices=true] returned 1 warnings: [299 Elasticsearch-7.17.13-2b211dbb8bfdecaf7f5b44d356bdfe54b1050c13 "[ignore_throttled] parameter is deprecated because frozen indices have been deprecated. Consider cold or frozen tiers in place of frozen indices."]
Exception in thread "I/O dispatcher 1" java.lang.AssertionError
    at org.elasticsearch.client.Response.assertWarningValue(Response.java:193)
    at org.elasticsearch.client.Response.extractWarningValueFromWarningHeader(Response.java:183)
    at org.elasticsearch.client.Response.getWarnings(Response.java:205)
    at org.elasticsearch.client.RestClient$1.completed(RestClient.java:546)
    at org.elasticsearch.client.RestClient$1.completed(RestClient.java:537)

        Springboot 执行 ES 单元测试时发生上述异常 , 看提示应该是因为使用了 ignore_throttled 过期参数导致的,但是我的查询并没有使用这个字段,那它是从哪里来的呢?

先 debug 查看异常处代码 Response.assertWarningValue

ES 数据插入异常原因分析,实战问题汇总,# ES 存储,elasticsearch,es

private static final Pattern WARNING_HEADER_PATTERN = Pattern.compile(
            "299 " + // warn code
            "Elasticsearch-\\d+\\.\\d+\\.\\d+(?:-(?:alpha|beta|rc)\\d+)?(?:-SNAPSHOT)?-(?:[a-f0-9]{7}|Unknown) " + // warn agent
            "\"((?:\t| |!|[\\x23-\\x5B]|[\\x5D-\\x7E]|[\\x80-\\xFF]|\\\\|\\\\\")*)\"( " + // quoted warning value, captured
            // quoted RFC 1123 date format
            "\"" + // opening quote
            "(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), " + // weekday
            "\\d{2} " + // 2-digit day
            "(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) " + // month
            "\\d{4} " + // 4-digit year
            "\\d{2}:\\d{2}:\\d{2} " + // (two-digit hour):(two-digit minute):(two-digit second)
            "GMT" + // GMT
            "\")?");

private static boolean assertWarningValue(final String s, final String warningValue) {
        final Matcher matcher = WARNING_HEADER_PATTERN.matcher(s);
        final boolean matches = matcher.matches();
        assert matches;
        return matcher.group(1).equals(warningValue);
}

这段代码是从 es 请求的响应中提取告警信息,判断是否符合断言,该正则表达式分为三部分

1、299 Elasticsearch-xxx...

2、捕获的告警信息

3、时间(可有可无)

对比运行时异常信息发现,299 Elasticsearch-7.17.13-2b211dbb8bfdecaf7f5b44d356bdfe54b1050c13 不在 WARNING_HEADER_PATTERN 约束的版本内,导致匹配失败,分析下我使用的版本信息 

  • maven 依赖信息
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.2.6.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
        <version>3.2.6.RELEASE</version>
    </dependency>
  • ES  版本 7.17.13

查看官网各版本对应关系:
 Spring Data Elasticsearch - Reference Documentation

ES 数据插入异常原因分析,实战问题汇总,# ES 存储,elasticsearch,es

升级 springboot 版本为 2.7.10

ES 数据插入异常原因分析,实战问题汇总,# ES 存储,elasticsearch,es

再次执行单元测试通过,没有异常信息,数据正常插入ES

注:[ignore_throttled] parameter is deprecated because frozen indices have been deprecated. Consider cold or frozen tiers in place of frozen indices. 是什么 ?

 什么是 ignore_throttled ?

  • ignore_throttled=true 会忽略被限制的分片并继续执行搜索操作,可能导致搜索结果的不完整性(分片受到资源限制或负载高,且无法及时响应搜索请求,这些被限制的分片将会被忽略);而 ignore_throttled=false 会等待被限制的分片完成操作并返回完整的结果,确保搜索结果的完整性和准确性,但可能会增加搜索请求的响应时间。
  •  ignore_throttled 参数在版本6.4.0中开始被废弃(deprecated),并且在版本7.0.0中完全移除(removed),建议使用默认值false
  • 在 7.0 版本中,可以使用 search.allow_partial_results(true/false 用于控制搜索操作是否允许返回部分结果) 替代 ignore_throttled 参数 ignore_throttled

 为什么在高版本中不需要ignore_throttled了?文章来源地址https://www.toymoban.com/news/detail-820703.html

  • 改进索引策略:高版本的Elasticsearch引入了改进的索引策略,其中包括更好的分片管理和负载均衡机制。这些改进使得Elasticsearch能够更好地处理高负载和资源限制的情况,而不需要显式地忽略被限制的分片。
  • 自适应限速(Adaptive Throttling):较高版本的Elasticsearch引入了自适应限速机制,它根据系统的负载情况自动调整操作的速度。自适应限速能够更智能地应对资源限制和负载情况,而无需开发人员手动设置忽略被限制的分片。
  • 保证结果的完整性:忽略被限制的分片可能会导致搜索结果的不完整性,因为被限制的分片可能包含一部分数据。为了确保搜索结果的准确性和完整性,建议不忽略被限制的分片,而是等待它们完成操作并返回完整的结果。

到了这里,关于ES 数据插入异常原因分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android进阶宝典 —如何通过ANR日志分析问题原因

    当系统发生ANR时,会主动dump trace日志并保存在data/anr/trace.txt文件夹下,我们在拿到anr日志之后,就可以着手分析日志;或者可以通过bugreport命令来拉取日志,具体命令如下: 当然我们在解读日志的时候,肯定是需要一些去查询,判断到底是哪种类型的问题导致了ANR。

    2024年02月05日
    浏览(39)
  • Linux系统中CPU占用率过高问题原因分析

    背景: 在服务器上部署了一个项目,发现项目部署完成之后,CPU占用率居高不下,现将原因分析过程总结如下: 通过top命令查看CPU占用率,分析CPU占用过高的原因 步骤一: 通过top命令,查看占用CPU高的进程ID 步骤二: 找到占用CPU高的进程ID(这里的进程ID是14288)之后,查看是

    2024年02月10日
    浏览(39)
  • 安卓之导致ANR的原因分析,问题定位以及解决方案

            在Android应用开发中,Application Not Responding(ANR)是一种常见的性能问题,它直接关系到用户体验的质量。当应用在特定时间段内无法及时响应用户的交互或者系统事件时,系统将会抛出ANR错误,提示用户应用已停止响应。为了确保应用的流畅性和用户满意度,理解

    2024年03月13日
    浏览(45)
  • 【服务器数据恢复】Raid磁盘阵列常见故障类型&原因分析

    由于raid的特点和优势,磁盘阵列技术被广泛应用于服务器和存储等商用领域。由于用户基数大,出现故障的情况也不少。通过这篇文章介绍一下常见的raid磁盘阵列数故障类型和原因。   故障类型一、磁盘阵列处于降级状态时未及时rebuild。 RAID磁盘阵列的数据安全冗余是利用

    2023年04月25日
    浏览(38)
  • 图文讲解,ping: www.baidu.com: 未知的名称或服务原因分析,真正的解决Ping不通的问题

    这是我自己遇到的错误,基本找遍了全网都没有解决我这个问题,应为那些IP配置搞得我头晕,而通过我两天的踩坑已经解决,并帮同学也超过解决。这个错误让我印象深刻。希望也能解决你的错误,如果到后面还是没解决,我建议去看视频,应为我也是在看视频的过程中才

    2024年02月06日
    浏览(51)
  • 解决winstore下载mincraft 出现错误提示的问题,以及minecraft.exe出现此应用无法在你的电脑上运行的原因分析。

    mincraft 点开显示此应用无法在你的电脑上运行,去C:XboxGamesMinecraft LauncherContent下看了下: 但是别人电脑上相同目录下一样的文件能运行,于是选择重装,但是刚开始下载就遇到这个问题: 商店提示这个 点开一看是0x80070005,去网上查了下是权限错误,E_ACCESSDENIED 用windbg看了

    2024年02月03日
    浏览(73)
  • 【Node.js相关问题】npm install报错后重装node版本及npm环境变量配置及npm run dev启动报错原因分析解决办法

    昨天在准备打开b站up主三更草堂的博客项目08-02.基础版本前端联调_哔哩哔哩_bilibili中的前端工程时,使用以下两个命令分别都出现了报错。 命令1 : # install dependencies npm install 命令2 : # serve with hot reload at localhost:8080 npm run dev 2.1 首先是淘宝镜像过期的问题,这个解决办法比

    2024年04月10日
    浏览(79)
  • QT--崩溃原因分析

    本文为学习记录,若有错误,请联系作者,谦虚受教。 你从来来去自由,若你不想要了跑开便是。 发布的客户版本里分析崩溃原因,便于解决问题。 在自己QT安装的目录下,例如:D:QtQt5.12.3Toolsmingw730_32bin,找到adde2line.exe。 将add2line.exe复制到自己发布的版本中。 在代码

    2024年02月13日
    浏览(53)
  • 蓝牙模块传输音频出现卡顿原因分析

    蓝牙模块传输音频出现卡顿原因分析 作为一个在无线蓝牙技术行业工作10年+的硬件工程师,整理一些蓝牙模块传输音频出现卡顿原因的分析仅供大家参考: 一、天线方面 天线性能直接影响到蓝牙型号的发射强度,一般来说蓝牙音频传输有效的使用范围是10-15米,实际使用一

    2024年02月01日
    浏览(49)
  • 路由器死机的四大原因分析

    经常会在网上看到诸多网友在购买宽带路由器以后,在使用过程中遇到死机频繁掉线问题,给网友带来很多不便,以至于有些产品被网友说的一文不值。今天,作者就对宽带路由器死机掉线问题进行客观分析,看看到底是什么原因造成了这些问题。 一、带机数量引起的路由器

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包