为了提高性能,我想批量向Elasticsearch发送文档,而不是逐个发送。我在上读过弹性批量APIhttps://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-bulk.html
但是,我使用的是Elasticsearch rest客户端(https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html)并且找不到任何关于如何进行批量插入的示例或文档。我所能找到的只是通过传输客户端的批量请求。
我想我必须准备请求体,如这里所述(https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html),并将其传递给restClient的performRequest方法?有没有其他方法,例如,ES java rest客户端库中的构建器机制,使用rest进行批量插入?
除Val答案外的另一个示例:http://web.archive.org/web/20180813044955/http://cscengineer.net/2016/10/22/elastic-搜索批量api/
只需使用POST而不是PUT(在使用rest模板时要小心. Exchange)
是的,这是正确的,现在REST客户端只允许向ES发送原始REST查询,但不太复杂。弹性正在开发一个高级客户端,它将在REST客户端之上工作,允许您发送DSL查询等。
现在,您可以使用以下示例代码将文档批量发送到ES服务器:
RestClient client = ...;
String actionMetaData = String.format("{ \"index\" : { \"_index\" : \"%s\", \"_type\" : \"%s\" } }%n", index, type);
List<String> bulkData = ...; // a list of your documents in JSON strings
StringBuilder bulkRequestBody = new StringBuilder();
for (String bulkItem : bulkData) {
bulkRequestBody.append(actionMetaData);
bulkRequestBody.append(bulkItem);
bulkRequestBody.append("\n");
}
HttpEntity entity = new NStringEntity(bulkRequestBody.toString(), ContentType.APPLICATION_JSON);
try {
Response response = client.performRequest("POST", "/your_index/your_type/_bulk", Collections.emptyMap(), entity);
return response.getStatusLine().getStatusCode() == HttpStatus.SC_OK;
} catch (Exception e) {
// do something
}
我正在使用Java Rest客户端进行弹性搜索https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html但找不到批量插入或更新的方法。如何与该客户进行批量操作?
我正在使用Spring boot和AWS elasticsearch服务。AWS Elasticsearch服务,仅提供REST接口。 Elasticsearch Rest客户端在这里。 简单地说,是否可以将REST客户端与Spring Data Elasticsearch一起使用? 换句话说,Spring Data Elasticsearch是否与Elasticsearch Rest客户端配合使
我正在寻找一个JMX客户端,它可以从批处理文件中调用mbean操作。实际上,cron作业应该通过Weblogic服务器中的JMX调用操作。 不幸的是,VisualVM在批处理模式下无法工作(或者它可以吗?)。 那么,您使用什么作为JmX批处理客户端? 有人试过吗http://wiki.cyclopsgroup.org/jmxterm ? 我找不到它的驾照 什么是最好的或最常用的JMX控制台/客户端
问题内容: 我需要通过REST API的Batch端点将大量节点及其之间的关系插入到Neo4j中,大约每秒5k记录(仍在增加)。 这将是24x7连续插入。每条记录可能只需要创建一个节点,而其他记录可能需要两个节点并创建一个关系。 是否可以通过更改程序或修改Neo4j的设置来提高插入件的性能? 到目前为止,我的进度: 1.我已经使用Neo4j进行了一段时间的测试,但无法获得所需的性能 测试服务器盒:
我得到以下异常,而试图使用Elasticsearch高Rest客户端。 我使用的是Spring Boot 2.0.4和Elasticsearch 6.4版本。。用例只是用一些数据创建一个索引,然后检索相同的数据。。 我刚刚遵循了elasticsearch文档中的依赖项,并正确地进行了设置。 我对Gradle的依赖是 为了简单起见,给出了代码的简短版本。。 有人能帮忙吗?
我正在尝试从ElasticSearch 2过渡到5或6。我想我想直接跳到6.1.1并使用RestHighLevelClient,因为它比低级rest客户端更接近我正在使用的现有传输客户端。 但是,我遇到了一个问题作为集成测试的一部分,我正在创建索引并插入特定数据,因此我知道我的查询是正确的。我似乎无法在High Level客户端中做到这一点。特别是,我希望能够调用: 但是,client.indic