ES查询报错:entity content is too long [142501157] for the configured buffer limit [104857600]

ES查询entity content is too long [114829448] for the configured buffer limit [104857600]; nested excep 解决方案 工程添加类 package com.luding.task.config; import org.apache.http.HttpResponse; import org.apache.http.nio.protocol.HttpAsyncResponseConsumer; import org.elasticsearch.client.HeapBufferedAsyncResponseConsumer; import org.elasticsearch.client.HttpAsyncR 阅读详情
AI摘要

本文介绍了解决Elasticsearch查询时遇到的ContentTooLongException异常的方法,提供了两种解决方案,一种是通过自定义RequestOptions,另一种是通过Java反射调整默认配置。

java - org.apache.http.ContentTooLongException: entity content is too long [105539255] for the configured buffer limit [104857600] - Stack Overflow

在生产环境批量同步数据的时候,我写了一个查询请求,然后直接报错:entity content is too long [142501157] for the configured buffer limit [104857600]

具体内容如下:

Caused by: org.apache.http.ContentTooLongException: entity content is too long [142501157] for the configured buffer limit [104857600]
        at org.elasticsearch.client.HeapBufferedAsyncResponseConsumer.onEntityEnclosed(HeapBufferedAsyncResponseConsumer.java:76)
        at org.apache.http.nio.protocol.AbstractAsyncResponseConsumer.responseReceived(AbstractAsyncResponseConsumer.java:137)
        at org.apache.http.impl.nio.client.MainClientExec.responseReceived(MainClientExec.java:315)
        at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseReceived(DefaultClientExchangeHandlerImpl.java:151)
        at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.responseReceived(HttpAsyncRequestExecutor.java:315)
        at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:255)
        at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81)
        at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39)
        at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)
        at java.lang.Thread.run(Thread.java:748)
        Suppressed: org.apache.http.ContentTooLongException: entity content is too long [142501157] for the configured buffer limit [104857600]
                ... 16 more
                Suppressed: org.apache.http.ContentTooLongException: entity content is too long [142501157] for the configured buffer limit [104857600]
                        ... 16 more

在HttpAsyncResponseConsumerFactory类中:

image-20210913091009287

在HeapBufferedAsyncResponseConsumer类中有一个判断:返回的内容长度大于限定的100MB就会抛出ContentTooLongException异常。

image-20210913091124017

我这里用的依赖是:

            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-client</artifactId>
                <version>6.6.2</version>
            </dependency>

            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
                <version>6.6.2</version>
            </dependency>

            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-high-level-client</artifactId>
                <version>6.6.2</version>
            </dependency>

            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>6.6.2</version>
            </dependency>

而我们对es进行查询操作,或者其他增删改操作是,都会默认使用如下的RequestOptions.DEFAULT

image-20210913092812479

进入RequestOptions.DEFAULT看它的代码:这里用了HeapBufferedResponseConsumerFactory.DEFAULT

image-20210913092930138

而这个HeapBufferedResponseConsumerFactory.DEFAULT,就是我们之前看到的,已经被限制了100MB返回值的HeapBufferedResponseConsumerFactory。

image-20210913093039286

所以有两种方式可以解决这个bug。

方式一:

不使用默认的RequestOptions.DEFAULT,而通过使用自定义RequestOptions的方式(ES官方api已经给我们开放出来了):

RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
builder.setHttpAsyncResponseConsumerFactory(
    new HttpAsyncResponseConsumerFactory
    //修改为500MB
    .HeapBufferedResponseConsumerFactory(500 * 1024 * 1024));

RequestOptions requestOptions=builder.build();

方式二:

如果不方便修改怎么办,例如我们使用的是Spring Data ElasticSearch或者是其他的一些框架,而它默认使用的也是RequestOptions.DEFAULT

image-20210913094849500

这时候我们可以通过java反射进行修改:

        //设置es查询buffer大小
        RequestOptions requestOptions = RequestOptions.DEFAULT;
        Class<? extends RequestOptions> reqClass = requestOptions.getClass();
        Field reqField = reqClass.getDeclaredField("httpAsyncResponseConsumerFactory");
        reqField.setAccessible(true);
        //去除final
        Field modifiersField = Field.class.getDeclaredField("modifiers");
        modifiersField.setAccessible(true);
        modifiersField.setInt(reqField, reqField.getModifiers() & ~Modifier.FINAL);

        //设置默认的工厂
        reqField.set(requestOptions, new HttpAsyncResponseConsumerFactory() {
            @Override
            public HttpAsyncResponseConsumer<HttpResponse> createHttpAsyncResponseConsumer() {
                //500MB
                return new HeapBufferedAsyncResponseConsumer(5 * 100 * 1024 * 1024);
            }
        });

如果你使用的是springmvc,那么可以把这段代码加入到拦截器中,这样可以拦截需要自定义返回值大小的es请求

全网最全医学图像数据汇总 本仓库汇总了多个领域的医学图像开源数据集,涵盖CT、MRI、超声、内窥镜、病理、多模态、PET、OCT以及皮肤镜等多种成像技术。每个数据集均详细列出了任务类型、部位、格式、数量及下载链接,旨在为医学图像研究者提供便捷的资源导航。⚠️:这些数据集仅适用于学术研究用途。 阅读详情

相关推荐

LM Studio 模型加载与转换实战指南:从GGUF格式到本地部署

本文提供了使用LM Studio加载与转换GGUF格式大语言模型的完整实战指南。详细阐述了为何GGUF格式是本地部署的最佳选择,并逐步指导用户如何将非GGUF模型(如Transformers格式)转换为GGUF格式,以及在LM Studio中进行加载、配置GPU卸载等关键优化,最终实现流畅的本地离线对话体验。

weixin_29061425的博客 919

elasticsearch出现 entity content is too long问题解决

elasticsearch出现 entity content is too long问题解决 一、现象 ​ 项目中使用了[elasticsearch]的Java Low Level REST Client来操作es,低级客户端的特性就是需要手动控制对es的请求,所以会遇到一些请求过程中的问题。比如今天,线上环境在导出数据时es报错,提示 entity content is too long [145648701] for the configured buffer limit。大概意思是返回值过大,超过bu

重口味码农 1万+

若依ruoyi框架实现单点登录或者接入统一认证

log.info("单点登录用户[{}]不存在, 需要创建.", loginName);log.info("单点登录用户[{}]已存在.", loginName);jsonObjectData.put("nickName","单点1");if (code.equals("0")) {//验证成功需要自动登录。jsonObject.put("msg","验证成功");ajax.put("msg", "登录成功");

GitHub质检员 2万+

ES查询时报错内容过大: entity content is too long for the configured buffer limit

问题: ES查询时报错 entity content is too long for the configured buffer limit。解决: 设置ES查询内容限制HeapBufferedResponseConsumerFactory.原因: 单次查询内容大小太大。

aCupxxx的博客 8384

《机器学习》周志华_自学记录

第一章绪论## 1.1引言机器学习所研究的主要内容,是关于在计算机上从数据中产生"模型"(model)的算法,即"学习算法"(learning algorithm).在面对新的情况时(例如看到一个没剖开的西瓜),模型会给我们提供相应的判断(例如好瓜).如果说计算机科学是研究关于"算法"的学问,那么类似的,可以说机器学习是研究关于"学习算法"的学问.## 1.2基本术语:用于预测离散值,例如将样本分为“好瓜”或“坏瓜”。:用于预测连续值,例如西瓜的成熟度(如0.95、0.37)。

2201_75296678的博客 2531

[QMT和ptrade量化交易小白入门]-125、菜场大妈加上四大现金行业指数风控,最大回撤从22%减少了一半

群里面有人建议,在菜场大妈策略的基础上,加入申万的行业指数(银行,钢铁,有色,煤炭)测算其宽度,当这四大行业其中有一个高就会清仓(用来控制回撤)。这背后的逻辑是,在存量资金博弈的市场环境中,资金总量相对固定,当银行、钢铁、有色、煤炭等大市值周期行业因基本面改善(如涨价、政策催化)或避险需求而走强时,会吸引大量资金涌入,导致其他板块(尤其是小市值股票)面临流动性虹吸。经过回测,对比上一个版本发现确实是可以降低一半的回撤,最大回撤从22.3%降到了11.4%,而且有很多时间是空仓等待。

木头大左的博客 239

ES查询问题entity content is too long [142501157] for the configured buffer limit [104857600]

在@Configuration注释下,定义了一个名为ElasticSearchConfig的类,该类负责配置RestHighLevelClient以连接到Elasticsearch集群。这些属性包括用户名、密码和ES实例的URI。接着,定义了一个公共的RequestOptions实例COMMON_OPTIONS,以进行全局通用设置项、构建授权请求头、异步等信息。总之,这个文件定义了一个用于连接Elasticsearch的RestHighLevelClient,并设置了一些自定义参数。

m0_49790240的博客 1869

mapbox进阶,dem数据转为等高面,加载转换后的等高面到地图

本文详细介绍如何基于mapbox-gl v3.*.* 版本,使用dem数据转为等高面,加载转换后的等高面到地图,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 407

Elasticsearch常见问题(客户端篇)

客户端版本: 6.5.4报错截图: 问题原因: es返回的entity超过了默认的大小100x1024x1024(默认:104857600)解决方案: 方案一: 将 elasticsearch-rest-client-6.5.4.jar中org.elasticsearch.client.HttpAsyncResponseConsumerFactory类DEFAULT_BUFFER_LIMIT 加大为 150 * 1024 * 1024 即150M elasticsearch-rest-client-6.5

想和派大星一样 1352

矢量网络分析仪校准:原理、方法与系统适配性

矢量网络分析仪(VNA)校准是射频测量的关键环节,通过误差建模(12项误差项)和标准件测量,可将系统不确定度从±5dB降至±0.1dB以下。主流校准方法包括SOLT(适用于同轴系统)和TRL(适用于波导系统),二者在标准件、误差重点及频率上限等方面存在显著差异。随着6G与量子通信的发展,动态实时校准将成为新趋势。工程师需根据传输结构、频率范围及精度需求选择合适方法,确保测量精度。

u014344410的博客 262

毕设助力!从0到1构建基于YOLO的家居安防异常活动监测系统,让你的毕设守护家庭安全

做完这个项目,你会发现自己完整走过了“数据采集→标注→模型训练→功能集成→界面开发”的毕设全流程,这不仅是技术能力的证明,更是对“技术守护生活”这一理念的实践。答辩时,你可以重点讲这几点:系统解决了家居安防的哪些痛点、对比了不同YOLO模型的性能差异、系统未来能怎么优化(比如对接智能门锁/报警器、实现语音交互)。未来,这个系统还能往“更智能”的方向发展:比如结合行为分析判断异常意图、开发移动端APP实现全屋设备联动、在智慧社区中实现多家庭联防……想象空间很大。

LXY_LOVE36的博客 121

es 异常 org.apache.http.ContentTooLongException: entity content is too long 解决思路

问题:使用es 的java restHighLevelAPI 请求报错如下 Caused by: org.apache.http.ContentTooLongException: entity content is too long [349376897] for the configured buffer limit [104857600] at org.elasticsearch.client.HeapBufferedAsyncResponseConsumer.onEntityEnc

zhangjiaxx的博客 6100

yolov5运行detect.py之后卡住了?没后续,没结果,没报错,怎么办?如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1105

java.io.IOException: entity content is too long [xxx] for the configured buffer limit [1048576]

java 使用 es hight-level-client 连接集群 ,滚动导出数据报错。但是我不想批量太小,影响处理速度。解决方案2:自定义一个 requestOptions。:response内容太大。buffer装不下了。,我的是滚动导出数据,可以调小批量的大小。

Angus 2210

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ES java client 搜索报错 entity content is too long[xxx1] for the configured buffer limit [xxx2]

应用同事反馈,在使用es的滚动导出的时候,一共有5567条数据,但是实际上只拿到4567条数据,并且打断点,最后一次是获取到了456条数据。所以可以判断,中间少了1000条数据。因为滚动导出是每次1000条。初步判断,是少了一次数据解析,有可能第一次构建请求的时候,没有解析数据。实际上并不是,看报错如下图,是 entity content is too long[xxx1] for the configured buffer limit [xxx2]

Angus 1390

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ES查询报错ContentTooLongException排查过程

(因为这里使用es的方式不是直接使用spring原生方式,而是自己包装了一层,根本原因可能还是自己的包装的实现里面有一些不合适的地方,用search去做searchAggregationsCount,search内就会走上兜底size为10000的逻辑,当然直接使用开源的spring方式集成可能也会有类似的问题)到这里问题其实比较清晰了,经过对比我手动请求es的命令里面没有带size,而程序请求es的报文里面带了size,导致将文档内容在hits中响应了回来,导致响应超大。

qq_33606378的博客 854

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Elasticsearch

什么是Elasticsearch? 基本概念 1、index 名词:相当于mysql的inser, 动词:相当于数据库 2、Type 存在inde中,可以定义一个或多个类型,相当于mysql的table。 3、倒排索引 所有的数据都会进行分词,然后保存到分词中,每个分词都会保存数据的索引。 docker安装 elasticsearch 创建实例 docker run -d --name es2 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-n

weixin_43988600的博客 824

问题 entity content is too long [145648701] for the configured buffer limit

请求内容超过默认限制。网上说是HeapBufferedResponseConsumerFactory里bufferLimit要改一下。找了好一会找到如何改这个bufferLimit,记录一下解决过程 private static RequestOptions getLongBufferRequestOptions(int bufferLimits) { HttpAsyncResponseConsumerFactory.HeapBufferedResponseConsumerFactory con

e274794140的专栏 2816

修改Java程序设置的缓冲区大小

这个错误的意思是 Java程序设置的缓冲区大小(104857600字节,即100MB)不足以处理输入实体内容的长度(124347600字节)复制这个接口,粘贴到此包下 org.elasticsearch.client。找到 RequestOptions 类。在查询ES时出现了下面的错误。这里表明了限制为100MB。

Konglquan的博客 736

【elasticsearch】问题解决:Remote responded with a chunk that was too large. Use a smaller batch size

一、前言 在使用reindex的方式来进行es索引跨集群迁移时,遇到的报错,这里整理并记录一下。 二、问题描述 es索引迁移命令: curl -u admin:admin -XPOST "http://10.1.36.14:9200/_reindex" -d ' { "source": { "remote": { "host": "http://10.11.36.142:29200", "username": "admin", "password": "

Mrerlou的博客 938

部署elk

elk

青春不流名 905

ES查询报错内容长度超过104857600

entiity content is too long xxx for the configured buffer limit 104857600 使用 ElasticsearchRestTemplate 或者使用 RestHighLevelClient 查询 ES 报错 内容长度超过 104857600

fchen521的博客 2487

java调用elasticSearch api

java操作es有两种方式通过操作es的9300端口,9300是tcp端口,集群节点之间通信也是通过9300端口,会通过9300和es建立一个长连接,下面的es的依赖可以直接操作但是随着es的版本的提升spring-data需要封装不同版本的es的jar包,好像还没封装到这个版本(2019),另外官方也不推荐通过9300来操作es,而且这种方式在es8以后将被废弃通过9200操作,发送http请求我们在浏览官方文档的时候发现,js可以直接操作es,那为什么我们不直接用js来操作es呢?

梦想是很难很难的,所以先勇敢一点 3399

Elasticsearch Scroll 报错entity content is too long

high-level-rest api 在获取大量数据的时候报了这个错。之前的解决办法是修改Option 设置heap 大小,但是这次集群是使用的6.1.1 版本,没有这个参数。2024-06-24 15:22:01:568 ERROR [task-31] (ScrollFetcherProduceAction.java:129) 访问ES出错。我默认是5000,把这个改成小一些,一次http请求就不会返回那么多数据就可以解决。在代码中修改Scroll Request的 size() 函数。

doobetter的优快云 701

异常:java.io.IOException: entity content is too long [40400939] for the configured buffer limit [31457

这个缓冲区的大小在elasticsearch-rest-client依赖中会给一个默认值,代码溯源可知,是在RequestOptions类中调用的HttpAsyncResponseConsumerFactory接口中赋予,我代码中使用的7.6.2版本,默认值是100M。但异常信息中说的是因为超过了30M所以报错,与默认值不符,所以应该是有人在调用时对缓存区的大小进行了重新夫赋值。根据异常信息,报错原因是在处理输入流,即ES查询操作时,内容长度超过了配置的缓冲区限制。

weixin_41667076的博客 879

ElasticSearch 应用开发(七)Java Low Level Rest Client——Java API

1.概述 Java restclient分为两种:Java Low Level Rest Client(本节介绍重点)、Java HighLevel Rest Client(下节介绍)。 Java Low Level Rest Client Elasticsearch 官方低级客户端: 通过http协议 与Elasticsearch服务进行通信。请求编码和响应解码保留给用户实现。与...

腊八粥 4120
上一篇: com.fasterxml.jackson.core.JsonParseException: Unrecognized token ‘xxx‘:
下一篇: Elasticsearch Trying to create too many scroll contexts. Must be less than or equal to: [500]
qq_34412985
博客等级 码龄11年 143粉丝 983原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值