我正在使用Java Rest客户端进行弹性搜索https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html但找不到批量插入或更新的方法。如何与该客户进行批量操作?
我正在使用中的数据。json文件。
Elasticsearch版本:6.8.0
波姆。xml:
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.8.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.8.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.1</version>
<scope>test</scope>
</dependency>
</dependencies>`
Java
String bulkContent=new String(Files.readAllBytes(new File(filePath). toPath())); HttpEntity实体=new NStringEntity(bulkContent, ContentType.APPLICATION_JSON);请求请求=createRequest(indexName, indexType, http方法,实体); RestClient restClient=RestClient.builder(new HttpHost(主机名,端口,方案)). build();响应响应=restClient.perform请求(请求);
如果您使用Java来处理Elasticsearch服务器,我建议您改用Java API。以下是您可以使用它的地方:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html
您可以在文档API/批量API中找到如何执行批量操作。
如果出于某种原因仍然需要使用Java Rest客户端,则需要以Elasticsearch的批量请求格式构建有效负载,以便能够执行请求。
请在这里了解如何构建批量请求格式:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html(基本上,它是由json对象列表构建的)
Elasticsearch的5.2 Java Rest客户端是基于字符串的,很快就会变得一团糟。对于批量操作尤其如此,因为它们是通过链接JSON对象构建的。
如果您想/必须通过REST客户端连接到Elasticsearch集群,我建议您改用JEST客户端。
下面是一个关于如何使用JEST客户端进行批量请求的示例:
// Construct a new Jest client according to configuration via factory
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig
.Builder("http://localhost:9200")
.multiThreaded(true)
.build());
JestClient client = factory.getObject();
// Construct Bulk request from articles
Bulk bulk = new Bulk.Builder()
.defaultIndex("twitter")
.defaultType("tweet")
.addAction(Arrays.asList(
new Index.Builder(article1).build(),
new Index.Builder(article2).build()))
.build();
client.execute(bulk);
为了提高性能,我想批量向Elasticsearch发送文档,而不是逐个发送。我在上读过弹性批量APIhttps://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-bulk.html 但是,我使用的是Elasticsearch rest客户端(https://www.elastic.co/guide/e
我正在寻找一个JMX客户端,它可以从批处理文件中调用mbean操作。实际上,cron作业应该通过Weblogic服务器中的JMX调用操作。 不幸的是,VisualVM在批处理模式下无法工作(或者它可以吗?)。 那么,您使用什么作为JmX批处理客户端? 有人试过吗http://wiki.cyclopsgroup.org/jmxterm ? 我找不到它的驾照 什么是最好的或最常用的JMX控制台/客户端
我正在尝试重建一个与elasticsearch 2.4对话的插件,以便与elasticsearch 5配合使用。 代码来自:https://github.com/pentaho/pentaho-kettle/blob/master/plugins/elasticsearch-bulk-insert/src/org/pentaho/di/trans/steps/elasticsearchbulk/E
我在Azure上有3个主节点+3个数据节点elasticsearch集群。我试图执行批量操作,但我得到了关于节点本身的失败错误,以下是我如何设置客户端: 下面是批量操作: 它开始对1000个记录批次做出罚款响应,如下所示: 将执行由{1001}个操作组成的新大容量 然后我开始得到以下错误: 传输:383-[Stanley Stewart]未能获取{#传输#-1}{10.0.0.10}{10.0.0
从Java使用弹性搜索的最佳实践是什么?例如,可以使用REST API轻松找到留档和逐个查询删除功能的示例。传输客户端Java情况并非如此。 在哪里可以找到Java Transport Client的使用示例 Java Transport Client是否通过REST API覆盖了整个ElasticSearch功能,比如HTTP客户端
问题内容: 我不确定是否在批量索引编制中正确使用了该操作。 我的要求是: 网址是: 我想我错过了文档中的某些内容,但仍然找不到如何进行此操作的方法。 我想要 在索引中创建以上文档,或者如果存在则对其进行更新。 问题答案: 如果您通过批量API将索引中的记录添加为 那么如果该ID已经存在于索引中,您将获得一个异常。如果要添加或 替换 文档(取决于文档是否存在),则应按以下方式进行请求 如果已经存在具