我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ElasticSearch整合SpringBoot搭建配置

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ElasticSearch整合SpringBoot搭建配置

前言

目前正在出一个Es专题系列教程, 篇幅会较多, 请持续关注编程网

本节来给大家讲一下在Springboot中如何整合es~

本文偏实战一些,为了方便演示,本节示例沿用上节索引,好了, 废话不多说直接开整吧~

项目搭建

老规矩,先建maven项目,下面是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>springboot-es-all</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>
    <dependencies>
        <!--test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--ElasticSearch 客户端依赖-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.8.0</version>
        </dependency>
        <!--Hutool依赖-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.4</version>
        </dependency>
        <!--fast-json-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>
        <dependency>
            <groupId> org.slf4j </groupId>
            <artifactId> slf4j-api </artifactId>
            <version> 1.6.4 </version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.3.RELEASE</version>
            </plugin>
        </plugins>
    </build>
</project>

这里我使用的是elasticsearch-rest-high-level-client官方客户端,建议大家尽量用官方的,因为随着es的不断升级,很多api都过时了,如果你使用spring-boot-starter-data-elasticsearch这个要依赖社区去维护,很多新特性你没法使用到,也会存在安全性问题。

配置客户端

启动类:

@SpringBootApplication
public class EsStudyApplication {
    public static void main(String[] args) {
        SpringApplication.run(EsStudyApplication.class, args);
    }
}

配置文件 application.yml:

server:
  port: 9000
elasticsearch:
  host: 0.0.0.0
  port: 9200
  username:
  password:

客户端配置 config.EsClientConfig:

@Configuration
public class EsClientConfig {
    @Value("${elasticsearch.host}")
    private String host;
    @Value("${elasticsearch.port}")
    private int port;
    @Value("${elasticsearch.username}")
    private String userName;
    @Value("${elasticsearch.password}")
    private String password;
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost( host, port, "http")).setHttpClientConfigCallback(httpClientBuilder -&gt; {
                    httpClientBuilder.setMaxConnTotal(500);
                    httpClientBuilder.setMaxConnPerRoute(300);
                    return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                })
        );
        return restHighLevelClient;
    }
}

然后客户端我们就配好了,客户端的配置其实还有很多,感兴趣的同学自行查阅。后续使用的时候,直接导入RestHighLevelClient实例就好了

接着启动它,如果控制没有报错,说明配置没啥问题了, 记得要开启es服务~

索引API初探 & Index API

下面我们写一点测试用例,来验证我们是否可以操作es,为了方便演示,这里直接使用SpringBootTest来测试,大家平时在写springboot项目,类测试的时候也可以这么做

ping

新建api.IndexApi,调用ping()方法来测试是否链接成功:

@Slf4j
@SpringBootTest
public class IndexApi {
    
    public static final String index = "study";
    @Autowired
    private RestHighLevelClient client;
    @Test
    public void ping() throws IOException {
        if(client.ping(RequestOptions.DEFAULT)) {
            log.info("链接成功");
        }else {
            log.info("链接失败 !");
        }
    }
}    

点击IndexApi左上角的绿色箭头启动测试用例, 如果报错,尝试添加以下 注解

@RunWith(SpringRunner.class)
@SpringBootTest(classes = { EsStudyApplication.class })
public class IndexApi {....}

返回:

链接成功

说明客户端es服务端是通的

创建索引 & create

通过前面的学习,有了一定的基础之后,回到代码中其实就是调调方法,因为你知道了这个代码的逻辑做了什么操作。下面来看下如何创建索引:


    @Test
    public void createIndex() throws IOException {
        CreateIndexRequest request = new CreateIndexRequest(index);
        CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
        log.info("创建索引 ===> "+ JSONObject.toJSONString(createIndexResponse)); // 创建索引 ===> {"acknowledged":true,"fragment":false,"shardsAcknowledged":true}
    }

大家可以返回到kibana中查看索引是否被创建,从而验证代码执行是否成功

添加别名:

// alias
request.alias(new Alias("study_alias"));

索引设置settings:

// index settings
request.settings(
        Settings.builder()
                .put("index.number_of_shards", 3)
                .put("index.number_of_replicas", 2)
);

索引映射mapping:

 // index mappings
//        {
//            "mapping": {
//            "_doc": {
//                "properties": {
//                    "name": {
//                        "type": "text"
//                    }
//                }
//            }
//        }
//        }
XContentBuilder builder = XContentFactory.jsonBuilder();
builder.startObject();
{
    builder.startObject("properties");
    {
        builder.startObject("name");
        {
            builder.field("type", "text");
        }
        builder.endObject();
    }
    builder.endObject();
}
builder.endObject();
request.mapping(builder);

设置请求超时时间:

// 请求设置
request.setTimeout(TimeValue.timeValueMinutes(1));

索引是否存在 & exist

 
@Test
public void existIndex() throws IOException {
    GetIndexRequest request = new GetIndexRequest(index);
    boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
    log.info("索引{}存在 ===> {}", index, exists);
}

删除索引

 
@Test
public void delIndex() throws IOException {
    DeleteIndexRequest request = new DeleteIndexRequest(index);
    AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
    log.info("删除索引 ===> {}", JSONObject.toJSONString(delete)); // 删除索引 ===> {"acknowledged":true,"fragment":false}
}

结束语

下节带大家看下文档操作相关的api,也是我们业务中使用最多的api~

更多关于ElasticSearch整合SpringBoot的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ElasticSearch整合SpringBoot搭建配置

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ElasticSearch整合SpringBoot搭建配置

这篇文章主要为大家介绍了ElasticSearch整合SpringBoot搭建配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-22

ElasticSearch整合SpringBoot搭建配置的方法是什么

本文小编为大家详细介绍“ElasticSearch整合SpringBoot搭建配置的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“ElasticSearch整合SpringBoot搭建配置的方法是什么”文章能帮助大家解决疑惑,下
2023-07-05

springboot如何整合elasticsearch

这篇文章主要介绍了springboot如何整合elasticsearch问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-18

springboot整合redis配置

1、引入pom依赖 dependency> groupId>org.springframework.bootgroupId> artifactId>spring-boot-star
2023-08-23

SpringBoot整合ElasticSearch的示例代码

ElasticSearch作为基于Lucene的搜索服务器,既可以作为一个独立的服务部署,也可以签入Web应用中。SpringBoot作为Spring家族的全新框架,使得使用SpringBoot开发Spring应用变得非常简单。本文要介绍如
2023-05-31

Springboot redis整合配置的方法

本文小编为大家详细介绍“Springboot redis整合配置的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Springboot redis整合配置的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1
2023-06-19

SpringBoot整合Log4j2及配置步骤

这篇文章主要介绍了SpringBoot整合Log4j2以及配置详解,删除spring-boot-starter-parent默认使用spring-boot-starter-logging依赖,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-01-17

SpringBoot整合Shiro的环境搭建教程

这篇文章主要为大家详细介绍了SpringBoot整合Shiro的环境搭建教程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下
2022-12-19

SpringBoot整合JPA方法及配置解析

这篇文章主要介绍了SpringBoot整合JPA方法及配置过程,JPA是JavaPersistenceAPI的简称,中文名Java持久层API,感兴趣想要详细了解可以参考下文
2023-05-20

如何使用Springboot整合Apollo配置中心

本篇内容介绍了“如何使用Springboot整合Apollo配置中心”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Apollo简介Apoll
2023-06-20

使用SpringBoot如何实现对ElasticSearch进行整合

这篇文章给大家介绍使用SpringBoot如何实现对ElasticSearch进行整合,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、实体设计:Tutorial.javapublic class Tutorial i
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录