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

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

进入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版本、SpringBoot-data-elasticsearch版本、ElasticSearch版本的对应关系

Versions :: Spring Data Elasticsearch

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

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

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

创建索引

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

http://localhost:9200/user

则会创建名为user的索引

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

http://localhost:9200/user

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.gitcd elasticsearch-headnpm installnpm run start

电脑需要安装node环境

然后访问

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....

这是因为跨域了。

找到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

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

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@Beanpublic 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

注意这里避免踩坑,在配置类中配置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;@Testpublic void connecTest() throws IOException {CreateIndexRequest request = new CreateIndexRequest("test");CreateIndexResponse response = highLevelClient.indices().create(request, RequestOptions.DEFAULT);// 查看是否创建成功System.out.println(response.isAcknowledged());highLevelClient.close();}
}

运行单元测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android perfetto memory开源工具分析

目录 原理 官网链接 下载heap_profile producer_support.cc 本地编译 push heapprofd 工具使用 pb文件获取 打开*.pb文件 trace文件 提高系统CPU性能 拆解特定函数内存占用 环境配置 工具使用 修改heap_profile 脚本 原理 Android perfetto memory分析工具和ma…

QT图表-折线图、曲线图

时间记录&#xff1a;2024/1/15 一、使用步骤 1.添加图表模块 .pro项目管理文件中添加charts模块 QChart类&#xff1a;图表类 QChartView类&#xff1a;图表显示类 2.ui文件中添加QChartView组件 &#xff08;1&#xff09;选择一个QGrapicsView组件将其拖拽到ui界面上合适位…

pandas查看数据常用方法(以excel为例)

目录 1.查看指定行数的数据head() 2. 查看数据表头columns 3.查看索引index 4.指定索引列index_col 5.按照索引排序 6.按照数据列排序sort_values() 7.查看每列数据类型dtypes 8.查看指定行列数据loc 9.查看数据是否为空isnull() 1.查看指定行数的数据head() &#xff…

二分图带权最大匹配-KM算法详解

文章目录 零、前言一、红娘再牵线二、二分图带权最大完备匹配2.1二分图带权最大匹配2.2概念2.3KM算法2.3.1交错树2.3.2顶标2.3.3相等子图2.3.4算法原理2.3.5算法实现 三、OJ练习3.1奔小康赚大钱3.2Ants 零、前言 关于二分图&#xff1a;二分图及染色法判定-CSDN博客 关于二分…

JVM 一些重要配置参数

1、内存配置参数 -Xmx<size>&#xff1a;设置Java堆的最大内存。如 -Xmx2g 将堆的最大大小设置为2G&#xff0c;推荐配置为系统可用内存的70-80%-Xms<size>&#xff1a;设置Java堆的初始内存。如 -Xms2g 将堆的初始大小设置为2G&#xff0c;推荐配置与-Xmx的值相同…

华为云优惠券介绍、种类、领取入口及使用教程

华为云作为国内领先的云服务提供商&#xff0c;为了吸引用户&#xff0c;经常推出各种优惠活动&#xff0c;其中就包括华为云优惠券。通过领取和使用优惠券&#xff0c;可以降低用户上云成本&#xff0c;提升用户上云的使用体验。本文将详细介绍华为云的优惠券&#xff0c;包括…

Notepad++安装步骤

Notepad是一款文本编辑工具&#xff0c;支持27种编程语言&#xff0c;通吃C,C ,Java ,C#, XML, HTML, PHP,JS 等&#xff0c;该软件拥有完整的中文化接口及支持多国语言编写的功能&#xff0c;不仅可以用来制作一般的纯文字说明文件&#xff0c;还非常适合编写计算机程序代码&a…

2024年,如何打造惊艳的个人博客/出版系统并且赚点小钱?

几年前&#xff0c;我就推荐过用Markdown写作静态博客。静态博客几乎是零托管成本&#xff0c;比较适合个人博客起步。Markdown便于本地搜索&#xff0c;也可当作是个人知识库方案。 现在有了新的进展。我不仅构建了一个视觉上相当不错的个人网站&#xff0c;还美化了github、…

Mybatis配置动态数据源以及参数传递等

Mybatis必知必会 一、Mybatis动态加载数据源 在配置数据源连接时,在企业的真实开发中数据源一般都会写在配置文件中&#xff0c;而不会直接写在mybatis的核心配置文件中 所以,Mybatis为了方便开发人员去动态的获取数据源连接制定了一些特定的标签用于加载这些数据源。 具体做法…

c语言题目之斐波那契数列

文章目录 题目一、什么叫斐波那契数列1&#xff0c;由来2&#xff0c;定义 二、代码编写总结 题目 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、什么叫斐波那契数列 1&#xff0c;由来 在数学历史上&#xff0c;欧洲黑暗时期过后&#xff0c;第…

web3d-three.js场景设计器-sprite广告牌

three.js使用Sprite精灵实现文字或者图片广告牌1.将文字绘制到Canvas&#xff0c;调整对应宽高。2.作为Cavans材质绑定到Sprite3.加载到场景调整适当的scale function createLabel({ text, fontSize, textColor, color, imageUrl }) { return new Promise((resolve, reject) &…

数据结构学习 jz66 构建乘积数组

关键词&#xff1a;数学 双指针 方法一&#xff1a;这个题目我一开始做不知道不能用除法。我做的&#xff1a;[ 用时: 12 m 12 s ] 用了除法 分类讨论 方法二&#xff1a;后来看了提示&#xff0c;双指针&#xff0c;两边各开始乘。 方法三&#xff1a;然后又看了答案可以节…

vue 使用mock模拟数据

vue 使用mock模拟数据 安装依赖 cnpm install axios --save cnpm install mockjs --save-dev cnpm install json5 --save-dev在根目录下&#xff0c;新建一个mock文件&#xff0c;且创建如下文件 utils.js index.js const Mock require(mockjs) const { param2Obj } …

基于selenium的pyse自动化测试框架

介绍&#xff1a; pyse基于selenium&#xff08;webdriver&#xff09;进行了简单的二次封装&#xff0c;比selenium所提供的方法操作更简洁。 特点&#xff1a; 默认使用CSS定位&#xff0c;同时支持多种定位方法&#xff08;id\name\class\link_text\xpath\css&#xff09…

【电脑技巧】Win11关闭自动更新

要想彻底关闭Windows电脑的自动更新&#xff0c;仅仅从系统设置里面选择暂停更新是完全不够用的&#xff0c;只有将windows自动更新的服务关闭掉&#xff0c;才能有效阻止其更新。 关闭win11电脑自动更新的办法&#xff0c;具体操作如下&#xff1a; 1.在winr运行框中输入servi…

vue3中,vue-echarts基本使用(柱状图、饼图、折线图)

注意&#xff1a;vue-echarts在使用前要先安装echarts&#xff0c;不要只安装vue-echarts这一个 echarts官网地址&#xff1a;Apache EChartsApache ECharts&#xff0c;一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xf…

几个Python小案例,爱上Python编程!

Python是一种面向对象的解释型编程语言&#xff0c;源代码与解释器CPython遵守GPL协议&#xff0c;Python语法简洁清晰。 语法简洁清晰&#xff0c;那么我们用少量的Python代码能做哪些有趣的东西&#xff1f;温馨提示&#xff1a;文末必看。 一、画爱心表白 1、图形都是由一…

微软Power Platform使用Canvas app画布应用添加自定义连接器调用外部API展示数据

微软Power Platform使用Power Apps的Canvas app画布应用添加自定义连接器&#xff0c;调用外部API展示数据 目录 微软Power Platform使用Power Apps的Canvas app画布应用添加自定义连接器&#xff0c;调用外部API展示数据1、在Power Apps中找到自定义连接器2、创建一个空白的自…

CentOS7中将MySQL注册为系统服务开机启动

实际生产环境中为了避免重启服务器后所有的服务都手动启动带来的麻烦&#xff0c;建议所有基础服务都设置为开机自动启动。本章节我们主要演示在Centos7中如何将MySQL注册为系统服务&#xff0c;并实现开机自动启动。 ① 手动启动mysql&#xff0c;查看进程信息&#xff0c;复制…