- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 RestHighLevelRestClient 使用 ElasticSearch 批量插入时遇到异常。
ElasticsearchStatusException[Unable to parse response body]; nested: ResponseException[method [POST], host [http:x.com], URI [/_bulk?timeout=1m], status line [HTTP/1.1 413 Request Entity Too Large] {"Message":"Request size exceeded 104857600 bytes"}]; at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1386) at org.elasticsearch.client.RestHighLevelClient$1.onFailure(RestHighLevelClient.java:1357) at org.elasticsearch.client.RestClient$FailureTrackingResponseListener.onDefinitiveFailure(RestClient.java:844) at org.elasticsearch.client.RestClient$1.completed(RestClient.java:548) at org.elasticsearch.client.RestClient$1.completed(RestClient.java:529) at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:122) at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:181) at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:448) at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:338) at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265) 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(Unknown Source) Suppressed: ParsingException[Failed to parse object: expecting field with name [error] but found [Message]] at org.elasticsearch.common.xcontent.XContentParserUtils.ensureFieldName(XContentParserUtils.java:50) at org.elasticsearch.ElasticsearchException.failureFromXContent(ElasticsearchException.java:605) at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:169) at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:1406) at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1382) ... 19 more
我搜索了SO帖子,发现有些人建议设置http.max_content_length,但我无法用这个解决它。下面是我保存数据的代码 -
private void saveAll(BulkRequest bulkRequest, String indexName)
{
try {
System.out.println("***Saving data into " + indexName + " of Size = " + bulkRequest.numberOfActions());
// restHighLevelClient.bulk(bulkRequest,RequestOptions.DEFAULT);
Builder builder = RequestOptions.DEFAULT.toBuilder();
builder.addHeader("http.max_content_length", "500mb");
RequestOptions requestOptions = builder.build();
restHighLevelClient.bulkAsync(bulkRequest,requestOptions , new ActionListener<BulkResponse>()
{
@Override
public void onResponse(BulkResponse response)
{
System.out.println("Bulk Data sucessfully Saved in " + indexName + " ElasticIndex***");
}
@Override
public void onFailure(Exception e)
{
System.out.println("Issue in bulk data saving in " + indexName + " ElasticIndex***");
e.printStackTrace();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
最佳答案
我已通过减小 BulkRequest 的大小解决了该问题。您可以在下面的代码中看到,如果 dataModelList 大小 id 大于 10000,那么我将该列表拆分为 5000 条数据,然后保存到 Elastic 中。希望它能帮助别人。
if (dataModelList.size() > 10000) {
List<List<BaseDataModel>> baseDataModels = Lists.partition(dataModelList, 5000);
baseDataModels.stream().forEach(baseModels -> {
BulkRequest bulkRequest = new BulkRequest();
baseModels.stream().forEach(baseModel -> {
bulkRequest.add(getBaseDataModelIndexRequest(baseModel));
});
saveAll(bulkRequest, rawEventIndex);
});
}
关于java - 使用 RestHighLevelClient 的 ElasticSearch 批量插入 gies 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57217427/
我正在尝试从需要访问外部请求代理的网络中访问Cloud Elasticsearch安装。这是我用来传递Elasticsearch凭证和我们的代理设置的代码片段: CredentialsProvider
如果elasticsearch在单一模式下运行,我可以使用以下代码轻松建立RestHighLevel连接: RestHighLevelClient client = new RestHighLevel
我想用RestHighLevelClient在不同集群上使用 Cross Cluster mechanizem 不支持的命令(例如关闭和打开索引)。 我的问题是我是否使用了多个 RestHighLev
我需要模拟 RestHighLevelClient 来测试我的代码。基本上,当我调用 RestHighLevelClient 的“搜索”方法时,我得到 UnfinishedStubbingExcept
我正在对包含空格的字段执行搜索,我希望不对其进行分析,即不将其拆分为克并被视为单个实体。我如何在 Java 中执行此操作? 我正在使用 RESTHighLevelClient 版本 7.4。 最佳答案
我正在尝试通过此依赖项使用 RestHighLevelClient org.elasticsearch.client elasticsearch-rest-h
我正在尝试在 Scala 程序中插入 ElasticSearch(ES)。 在 build.sbt 我添加了 libraryDependencies += "org.elasticsearch.cli
我正在使用vpc端点进行 flex 搜索,以使用RestHighLevelClient索引我的文档。 我正在使用Java高级休息客户端v6.2.2连接Elasticsearch 6.0版 我无需任何身
我想知道这里是否有人使用 RestHighLevelClient 连接到 AWS ElasticSearch。不确定 AWS ElasticSearch 是否支持此功能。目前,每次尝试连接时,我都会收
我正在使用 Elasticsearch RestHighLevelClient 并尝试实现下面的 sql: select format(date,'yyyy-MM-dd'), count(*) fro
我使用 MultiSearchRequest 按字段的一部分在 Elasticsearch 中进行搜索: @Override public Collection> findContractsByInd
我在 Elasticsearch 中为 RestHighLevelClient 使用以下代码。 val credentialsProvider = new BasicCredentialsProvid
当索引 100k 文档时,以下行出现 listener 超时异常 IndexResponse response = SearchEngineClient.getInstance2().index(re
我试过下面的代码它工作正常,但它使用 运输客户端 删除所有文档。 DeleteByQueryRequestBuilder deleteByQueryRequestBuilder = DeleteByQ
我们的应用程序在 elasticsearch 服务器中索引(存储)文档时遇到超时异常。它不会经常发生,但大约每天一次。这是详细信息。 pom.xml org.elasticsearch.cl
Elastic 正在更新他们的文档以使用带有 Java 的 RestHighLevelClient。它还具有映射 API: https://www.elastic.co/guide/en/elasti
我在 SpringBoot 应用程序中创建 HighEndRestClient bean 时遇到错误。我已经完成了一个测试“应用程序”,我检查了我可以实例化我想要的对象,然后进行我想要的调用,现在我正
如何在下面使用bool创建RestHighLevelClient查询? 我的尝试未返回任何内容: BoolQueryBuilder query = boolQuery()
在我的 Elasticsearch 索引中,我保存了大约 30000 个实体。我想使用 RestHighLevelClient 获取它们的所有 id。我读过最好的方法是使用滚动 api。但是,当我这样
在我的 Scala 项目中,我试图用新的 RestHighLevelClient 更改旧的 transportClient 以连接到 Elasticsearch (6.1)。 但我在尝试创建 Bulk
我是一名优秀的程序员,十分优秀!