当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch中Java Rest客户端的批量操作

龙佐
2023-03-14

我正在使用Java Rest客户端进行弹性搜索https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html但找不到批量插入或更新的方法。如何与该客户进行批量操作?

共有3个答案

万承志
2023-03-14

我正在使用中的数据。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请求(请求);

张高澹
2023-03-14

如果您使用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对象列表构建的)

鲁涵映
2023-03-14

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已经存在于索引中,您将获得一个异常。如果要添加或 替换 文档(取决于文档是否存在),则应按以下方式进行请求 如果已经存在具