SpringBoot中整合ElasticSearch快速入门以及踩坑记录

这篇具有很好参考价值的文章主要介绍了SpringBoot中整合ElasticSearch快速入门以及踩坑记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

若依前后端分离版手把手教你本地搭建环境并运行项目:

若依前后端分离版手把手教你本地搭建环境并运行项目_本地运行若依前后端分离-CSDN博客

参考上面搭建项目。

ElaticSearch

Elasticsearch 是java开发的,基于 Lucene 的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口。

Elasticsearch 可以快速有效地存储,搜索和分析大量数据,而且在处理半结构化数据(即自然语言)时特别有用。

ElasticSearch官方文档:

Elastic documentation | Elastic

应用集成ElasticSearch的方式有,REST Client、Jest、Spring Data、Spring Data Elasticsearch Repositories。

下面将介绍Spring Data Elasticsearch的方式。

注:

博客:
霸道流氓气质-CSDN博客

实现

1、在Windows上实现ElaticSearch下载安装和配置

下载地址:

Download Elasticsearch | Elastic

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

这里是Windows,下载对应的包,下载之后解压

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

进入bin下,双击elasticsearch.bat可以启动

2、踩坑一,这里不要随意下载官网最新的ES的安装包,需要与springboot版本以及spring-boot-data-elasticsearch的版本

使用指定的对应关系。

否则在运行时会提示:

Elasticsearch exception [type=illeagal_argument_exception,reason = request [/test] contains unrecognized parameter: [include_type_name]]

以及其他不可预知的问题。

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

如何查看SpringBoot版本、SpringBoot-data-elasticsearch版本、ElasticSearch版本的对应关系

Versions :: Spring Data Elasticsearch

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

这里的SpringBoot版本为2.2.13,所以上面下载ES时选择对应的6.8.2的版本

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

双击上面bat启动后,访问默认端口9200,出现如下提示则es启动成功

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

3、为了验证以上ES搭建成功,可使用调用接口的方式测试索引的创建与查询

创建索引

使用接口调用工具,发送如下PUT请求

http://localhost:9200/user

则会创建名为user的索引

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

然后再访问如下GET请求则可以查询索引

http://localhost:9200/user

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

ES还支持更多其他的api调用的方式和功能,这里不做介绍。

4、 ElasticSearch可视化工具elasticsearch-head的下载与使用

可以借助可视化工具进行对索引等的可视化操作。

GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster

访问以上地址

按照官网提示步骤运行

git clone git://github.com/mobz/elasticsearch-head.git

cd elasticsearch-head

npm install

npm run start

电脑需要安装node环境

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

然后访问

http://localhost:9100/ 

访问之后需要对ES连接,输入上面es的地址即可,这里是

http://localhost:9200/

但是在连接时没有连接成功的提示,此时打开控制台发现。

elasticsearch-head在连接Elasticsearch时提示:

GET http://localhost:9200/_nodes net::ERR_FAILED

Access to XMLHttpRequest at ... from origin ...has been blocked....

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

这是因为跨域了。

找到es的配置文件,config目录下的elasticsearch.yml

添加如下跨域配置

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-credentials: true
http.cors.allow-headers: Content-Type,Accept,Authorization,x-requested-with

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

然后重启es服务,则再连接显示成功

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

5、SpringBoot中集成ES

按照上面版本对应关系,添加pom依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            <version>3.2.2</version>
        </dependency>

然后新建配置类,用来配置es连接地址等

import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;

@Configuration
public class ElasticConfig extends AbstractElasticsearchConfiguration {

    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                .connectedTo("127.0.0.1:9200") //这里注意不要加http://
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}

这里注意使用的是官网推荐使用的RestHighLevelClient方式,详情见官方文档:

Spring Data Elasticsearch - Reference Documentation

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端

注意这里避免踩坑,在配置类中配置es的地址时,使用ip和端口号的方式127.0.0.1:9200

不要带http://

编写单元测试,测试连接与创建索引。

import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = RuoYiApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ElasticSearchTest {

    @Autowired
    @Qualifier("elasticsearchClient")
    public RestHighLevelClient highLevelClient;

    @Test
    public void connecTest() throws IOException {
        CreateIndexRequest request = new CreateIndexRequest("test");
        CreateIndexResponse response = highLevelClient.indices().create(request, RequestOptions.DEFAULT);
        // 查看是否创建成功
        System.out.println(response.isAcknowledged());
        highLevelClient.close();
    }
}

运行单元测试结果

SpringBoot中整合ElasticSearch快速入门以及踩坑记录,SpringBoot,spring boot,elasticsearch,后端文章来源地址https://www.toymoban.com/news/detail-797927.html

到了这里,关于SpringBoot中整合ElasticSearch快速入门以及踩坑记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch8和kibana部署以及与springboot整合遇到的坑

    我本来使用的是最新版本的es 8.6.2。但是由于ik分词器只更新到8.6.1,所以就更改为部署8.6.1。在过程中遇到一些问题,这里做一个总结 环境:windows10 elasticsearch版本:8.6.1 一、修改es 用户密码的方式 二、kibana 使用用户名和密码登录 修改kibana.yml 文件 启动kibana一直闪退 解决方

    2024年02月02日
    浏览(32)
  • springboot3整合consul实现服务注册和配置管理快速入门

    服务注册: 配置管理: 注册中心的比较: 在微服务的世界中,服务注册是必不可少的。现在比较流行的也就是Consul和Nacos,Zookeeper没有管理界面,一般不建议使用,而Eureka已经处于停更,并且本身就存在很多bug,一般不建议使用! 我之前写过一篇spring boot整合nacos实现服务注

    2024年04月16日
    浏览(35)
  • SpringBoot整合knife4j(快速入门超详细版)

    😊 @ 作者: Eric 💖 @ 主页: https://blog.csdn.net/weixin_47316183?type=blog 🎉 @ 主题: SpringBoot整合knife4j(快速入门超详细版) ⏱️ @ 创作时间: 2023年08月01日 在日常开发中,写接口文档是我们必不可少的,而Knife4j就是一个接口文档工具,可以看作是Swagger的升级版,但是界面比S

    2024年02月10日
    浏览(26)
  • SpringBoot+CAS整合服务端和客户端实现SSO单点登录与登出快速入门上手

    教学讲解视频地址:视频地址 因为CAS支持HTTP请求访问,而我们是快速入门上手视频,所以这期教程就不教大家如何配置HTTPS了,如果需要使用HTTPS,可以参考其他博客去云服务器申请证书或者使用JDK自行生成一个证书。 下载CAS Server(直接下载压缩包就可以) 这里我们用的是

    2024年02月02日
    浏览(46)
  • linux部署 ElasticSearch 踩坑记录

    java 环境 :1.8.0-openjdk es版本:   elasticsearch-7.17.3  [1]./elasticsearch-env:行83: /home/es/elasticsearch-7.17.7/jdk/bin/java: 无法执行二进制文件   问题原因: es 的版本与jdk版本不匹配,检查当前es 版本对应的jdk ,然后重新配置环境即可。    查看对应 支持矩阵 | Elastic 解决方案: 升级对

    2024年02月10日
    浏览(31)
  • elasticsearch 安装教程以及踩坑

    1.程序可能存在兼容性,本文之前使用centos7.x,安装了,环境也正常了,但是运用不一定能正常跑起来,所以建议使用centos8.x安装:CentOS 8.4.2105 x86_64 2.下载地址:elasticsearch-6.2.3.tar.gz 3.JDK此版本JDK必须要求1.8+ 4.使用宝塔面板,请安装Tomcat8及以上,就可以自动安装jdk1.8了,如果

    2024年02月07日
    浏览(27)
  • Elasticsearch安装IK分词器踩坑记录

    在安装ES ik分词器参考如下博文进行安装时报后面的错误提示 https://blog.csdn.net/ZHHX666/article/details/125953385 错误提示: 参考如下博文得已解决: https://blog.csdn.net/Sun_shine95/article/details/126042447 结论: 可能是不同版本目录不同,建议还是使用命令进行安装,不要自己手动建目录。

    2024年01月25日
    浏览(31)
  • ElasticSearch安装详细教程以及相关踩坑

    在刚刚创建好的文件夹内下载Elasticsearch(以下简称es) 如果需要后台启动的话,在启动命令后加,如下所示: es比较吃内存,所以建议使用8g及以上的机器运行es,如果内存小了可能导致跑步起来。 es不能使用root用户直接启动,需要参考“问题二”使用新用户启动es。 es使用ip访问

    2023年04月09日
    浏览(20)
  • [Elasticsearch] ES更新问题踩坑记录,直面秋招

    基本可以定位是在es更新这块出问题了 看对应代码 final TableDocBean docBean = baseSearchService.getById(id); setValueForBean(afterColumns, docBean); log.info(“update table data to es: {}”, JSON.toJSONString(docBean)); baseSearchService.update(docBean); 代码先通过表id 获取对应ES文档,然后赋值 执行更新数据操作 这块

    2024年03月25日
    浏览(41)
  • 记录--静态网站 H5 跳小程序,以及踩坑

    我司有 智慧功成家 APP和对应的小程序,现在已经实现APP分享到微信,微信点击分享链接直接进入小程序。 目前有一个问题就是我们APP在网警那边还没有完全审批下来,已经搞了几个月了,还不知道啥时能上线。微信对于这类分享是有限制的,可以分享1000次,后面不给分享了

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包