使用 Java 高级 REST 客户端提升您的 Elasticsearch 体验 ()

使用 java 高级 rest 客户端提升您的 elasticsearch 体验 ()

介绍

java high level rest client (7.x) 是一个与 elasticsearch 集群交互的强大工具,使服务器通信更容易访问和高效。在本指南中,我们将引导您完成在阿里云 elasticsearch 集群上使用高级 rest 客户端调用 elasticsearch java api 的步骤。

准备工作

第1步:创建elasticsearch集群

确保您的集群版本与您计划使用的 java high level rest client 版本相同或更新。有关分步说明,请参阅创建阿里云 elasticsearch 集群。

第 2 步:启用自动索引

在 yaml 配置文件中启用自动索引功能。详情请参见配置yml文件。

步骤3:配置ip地址白名单

通过配置ip地址白名单确保正常通信。如果您通过 internet 访问集群,请按照配置公共或私有 ip 地址白名单中的指南允许来自所需 ip 地址的请求。

第四步:安装jdk

安装 java 开发工具包 (jdk) 1.8 或更高版本。有关更多信息,请参阅安装 jdk。

第5步:创建java maven项目

将必要的依赖项添加到您的 pom.xml 文件中。将依赖项中的版本号从 7.x 更改为您正在使用的高级 rest 客户端的特定版本。

    org.elasticsearch.client    elasticsearch-rest-high-level-client    7.x    org.apache.logging.log4j    log4j-core    2.20.0    org.apache.logging.log4j    log4j-api    2.20.0

登录后复制

示例:管理索引

下面是使用高级 rest 客户端创建和删除索引的示例。将占位符 {} 替换为您的具体参数。

import org.apache.http.httphost;import org.apache.http.auth.authscope;import org.apache.http.auth.usernamepasswordcredentials;import org.apache.http.client.credentialsprovider;import org.apache.http.impl.client.basiccredentialsprovider;import org.apache.http.impl.nio.client.httpasyncclientbuilder;import org.elasticsearch.action.delete.deleterequest;import org.elasticsearch.action.delete.deleteresponse;import org.elasticsearch.action.index.indexrequest;import org.elasticsearch.action.index.indexresponse;import org.elasticsearch.client.*;import java.io.ioexception;import java.util.hashmap;import java.util.map;public class restclientexample {    private static final requestoptions common_options;    static {        requestoptions.builder builder = requestoptions.default.tobuilder();        builder.sethttpasyncresponseconsumerfactory(                new httpasyncresponseconsumerfactory                        .heapbufferedresponseconsumerfactory(30 * 1024 * 1024));        common_options = builder.build();    }    public static void main(string[] args) {        final credentialsprovider credentialsprovider = new basiccredentialsprovider();        credentialsprovider.setcredentials(authscope.any,             new usernamepasswordcredentials("{username}", "{password}"));        restclientbuilder builder = restclient.builder(new httphost("{endpoint of the elasticsearch cluster}", 9200, "http"))                .sethttpclientconfigcallback(new restclientbuilder.httpclientconfigcallback() {                    @override                    public httpasyncclientbuilder customizehttpclient(httpasyncclientbuilder httpclientbuilder) {                        return httpclientbuilder.setdefaultcredentialsprovider(credentialsprovider);                    }                });        resthighlevelclient highclient = new resthighlevelclient(builder);        try {            map jsonmap = new hashmap();            jsonmap.put("{field_01}", "{value_01}");            jsonmap.put("{field_02}", "{value_02}");            indexrequest indexrequest = new indexrequest("{index_name}", "_doc", "{doc_id}").source(jsonmap);            indexresponse indexresponse = highclient.index(indexrequest, common_options);            long version = indexresponse.getversion();            system.out.println("index document successfully! " + version);            deleterequest deleterequest = new deleterequest("{index_name}", "_doc", "{doc_id}");            deleteresponse deleteresponse = highclient.delete(deleterequest, common_options);            system.out.println("delete document successfully! " + deleteresponse.tostring());            highclient.close();        } catch (ioexception ioexception) {            ioexception.printstacktrace();        }    }}

登录后复制

高并发配置

对于高并发场景,增加客户端连接数:

httpclientbuilder.setmaxconntotal(500);httpclientbuilder.setmaxconnperroute(300);

登录后复制

示例代码片段:

String host = "127.0.0.1";int port = 9200;String username = "elastic";String password = "passwd";final int max_conn_total = 500;final int max_conn_per_route = 300;RestHighLevelClient restHighLevelClient = new RestHighLevelClient(  RestClient.builder(new HttpHost(host, port, "http")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {      httpClientBuilder.setMaxConnTotal(max_conn_total);      httpClientBuilder.setMaxConnPerRoute(max_conn_per_route);      return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);    }  }));

登录后复制

有关功能和配置的更多详细信息,请参阅官方 java high level rest client 文档。

结论

使用java high level rest client可以确保与阿里云elasticsearch集群的高效交互。按照本指南充分利用您的 elasticsearch 设置。
准备好开始您的阿里云 elasticsearch 之旅了吗?探索我们量身定制的云解决方案和服务,将您的数据转变为视觉杰作。

单击此处开始 30 天免费试用

以上就是使用 Java 高级 REST 客户端提升您的 Elasticsearch 体验 ()的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2673179.html

(0)
上一篇 2025年3月7日 13:37:26
下一篇 2025年2月28日 19:10:34

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用 Alpine JS 创建动态表

    本文探讨了使用轻量级 javascript 框架 alpine js 创建动态表。我们将把这个过程分为三个部分:页眉、正文和页脚,重点关注基本场景和复杂场景。 配置: html 结构: 我们从一个带有 x-data 指令的基本 html 元…

    2025年3月7日
    200
  • 掌握 React 中的 SOLID 原则:提高代码质量

    在开发健壮、可维护和可扩展的 react 应用程序时,应用 solid 原则可以改变游戏规则。这些面向对象的设计原则为编写干净高效的代码提供了坚实的基础,确保您的 react 组件不仅功能强大,而且易于管理和扩展。 在本博客中,我们将深入探…

    2025年3月7日
    200
  • SOLID 原则使用一些有趣的类比与车辆示例

    solid 是计算机编程中五个良好原则(规则)的缩写。 solid 允许程序员编写更易于理解和稍后更改的代码。 solid 通常与使用面向对象设计的系统一起使用。让我们使用车辆示例来解释 solid 原理。想象一下,我们正在设计一个系统来管…

    2025年3月7日
    200
  • 如何在Nextjs中添加RBAC授权

    基于角色的访问控制 (rbac) 是现代 web 应用程序中的一项重要功能,使管理员能够根据用户在系统中的角色来管理用户权限。在 next.js 应用程序中实现 rbac 涉及几个关键步骤:定义角色和权限、将其与身份验证集成以及在应用程序中…

    2025年3月7日
    200
  • React 中的 SOLID 原则:编写可维护组件的关键

    随着 react 应用程序的增长,事情可能会很快变得混乱——臃肿的组件、难以维护的代码和意外的错误。这就是 solid 原则派上用场的地方。这些原则最初是为面向对象编程而开发的,可帮助您编写干净、灵活且可扩展的代码。在本文中,我将分解每个 …

    2025年3月7日
    200
  • 里氏替换原理(LSP)的缺点

    里氏替换原理(LSP)的缺点 LSP(里氏替换原理)有一些局限性,其中包括: 严格合规性:编写遵守 LSP 的代码有时会在创建子类或派生类时引入额外的复杂性,因为它需要维护父类的所有属性。 缺乏灵活性:遵循LSP在某些情况下会降低灵活性,因…

    2025年3月7日
    200
  • node.js如何学

    学习 Node.js 的入门步骤:熟悉 JavaScript 语言安装 Node.js创建 Node.js 文件并打印信息导入模块理解事件和回调进行 HTTP 请求进行数据库操作操作文件系统使用命令行界面部署和测试应用程序 如何学习 Nod…

    2025年3月7日
    200
  • js如何制作table

    在 JavaScript 中,创建表格需要:1. 创建 元素;2. 使用 和 创建表头;3. 使用 和 创建表体;4. 使用 创建单元格;5. 设置边框和间距。 如何在 JavaScript 中创建表格 在 JavaScript 中,可以通…

    2025年3月7日
    200
  • 在 JavaScript 和 TypeScript 框架中应用 SOLID 原则

    简介 solid 原则构成了干净、可扩展和可维护的软件开发的基础。尽管这些原则起源于面向对象编程 (oop),但它们可以有效地应用于 javascript (js) 和 typescript (ts) 框架,例如 react 和 angul…

    2025年3月7日
    200
  • 我作为全栈开发者的旅程:从 Laravel 到 Nextjs

    作为一名全栈开发人员,我踏上了一段激动人心的旅程,这让我能够探索各种技术、框架和开发实践。在本文中,我想分享我使用 Laravel 进行后端开发和使用 Next.js 进行前端解决方案的经验,以及我在构建创新应用程序时如何在它们之间进行转换…

    2025年3月7日
    200

发表回复

登录后才能评论