IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> es 异常 org.apache.http.ContentTooLongException: entity content is too long 解决思路 -> 正文阅读

[大数据]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.onEntityEnclosed(HeapBufferedAsyncResponseConsumer.java:76)
        at org.apache.http.nio.protocol.AbstractAsyncResponseConsumer.responseReceived(AbstractAsyncResponseConsumer.java:129)
        at org.apache.http.impl.nio.client.MainClientExec.responseReceived(MainClientExec.java:332)
        at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseReceived(DefaultClientExchangeHandlerImpl.java:148)
        at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.responseReceived(HttpAsyncRequestExecutor.java:224)
        at org.apache.http.impl.nio.client.LoggingAsyncRequestExecutor.responseReceived(LoggingAsyncRequestExecutor.java:112)
        at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:254)
        at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:73)
        at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:37)
        at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:113)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105)
        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:584)
        at java.lang.Thread.run(Thread.java:748)

?根据报错可以得到信息:返回的数据大于100MB;因为我的代码设置为

mClient.search(searchRequest, RequestOptions.DEFAULT) // RequestOptions.DEFAULT 为默认值100MB。

既然如此,如何自定义设置这个大小呢?

1.根据返回信息的第一行,最后定位的报错位置 为HeapBufferedAsyncResponseConsumer 类的第76行;双击shift (我的是IDEA编辑器),将类名输入查找到第76行,定位bufferLimitBytes这个成员变量是谁给它赋值的;

2.通过根据引用为HttpAsyncResponseConsumerFactory第61行new了HeapBufferedAsyncResponseConsumer 进行赋值;

3.HttpAsyncResponseConsumerFactory 是一个接口,寻找它的子类为HeapBufferedResponseConsumerFactory,是通过构造器传入;

4.上面是根据报错的倒推思路;根据我赋值的默认值??RequestOptions.DEFAULT;判断自定义设置肯定也在?RequestOptions类里,看下图小写和第三步的?HttpAsyncResponseConsumerFactory接口是一样的,RequestOptions的构造器如图是私有化的,说明我们是不能直接调用的;下一步追踪是谁调用了这个私有化的构造器

?

5. 发现为该类的内部静态类的build 方法调用的;build方法返回的是一个RequestOptions;而我之前设置的RequestOptions.DEFAULT 也是一个?RequestOptions对象;因此大概可以确定关于参数的设置应围绕 内部静态类 Builder;而Builder 确实包含方法setHttpAsyncResponseConsumerFactory可以自定义参数大小

?

?

?6.? 因此代码为

      val builder = RequestOptions.DEFAULT.toBuilder
      val consumerFactory = new HeapBufferedResponseConsumerFactory(1024 * 1024 * 1024) //1g
      builder.setHttpAsyncResponseConsumerFactory(consumerFactory)
      var searchResponse = mClient.search(searchRequest, builder.build())

 

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:32:03  更:2022-03-30 18:32:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:56:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码