SpringBoot 整合 Elasticsearch (超详细)-程序员宅基地

技术标签: spring boot  elasticsearch  实战项目  搜索引擎  

本文章通过实战记录相关问题以及提供解决方案。

公众号:恩故事还在继续

1. 环境需求

为了完成 Spring Boot 与 Elasticsearch 整合需要安装下面工具

1. springboot 2.1.5
2. elasticsearch 6.4.3
3. elasticsearch ik 6.4.3
4. postman (这个任意)

1.1 Elasticsearch 安装

Elasticsearch 官网
Elasticsearch 6.4.3 下载链接

配置环境变量
点击我的电脑 -> 高级系统设置 -> 环境变量 -> 系统变量 -> Path 
D:\elasticsearch-6.4.3\bin
修改解压后 config 文件下的 elasticsearch.yml 自定义下面三个变量的属性
cluster.name: nowcode
如果不修改默认是 Linux 的地址
path.data: d:\data\elasticsearch_data
path.logs: d:\data\elasticsearch_log

1.2 Elasticsearch ik 安装

Elasticsearch ik 官网下载地址

Elasticserch ik 6.4.3 版本下载地址

解压 elasticsearch ik 到指定目录 (这里有个小坑需要注意)
我们首先在 elasticsearch 解压的目录下面找到 D:\elasticsearch-6.4.3\plugins
在 plugins 目录下面新建 ik 文件夹
然后将 elasticsearch ik 解压到 plugins 文件夹下
注意: 千万不要将 elasticsearch-analysis-ik-6.4.3 这个文件夹解压到 ik 里面 
我们只需要 elasticsearch-analysis-ik-6.4.3 下一级的内容解压到 ik 即可

1.3 postman 安装

Postman 官网下载链接

2. 测试 Elasticsearch是否安装成功

首先,在 D:\elasticsearch-6.4.3\bin 打开 elasticsearch.bat
然后, windows + R 输入 cmd 
分别使用下面这些命令进行测试:
查看健康状态
curl -X GET “localhost:9200/_cat/health?v“
查看节点
curl -X GET “localhost:9200/_cat/nodes?v“
查看索引
curl -X GET "localhost:9200/_cat/indices?v"
新建索引
curl -X PUT "localhost:9200/test"
删除索引
curl -X DELETE "localhost:9200/test"

3. SpingBoot 整合 Elasticsearch

3.1 配置 spring-boot-starter-data-elasticsearch 依赖

 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-elasticsearch -->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
	<version>2.1.6.RELEASE</version>
 </dependency>
在 application.properties 配置 ElasticserachProperties:
spring.data.elasticsearch.cluster-name=nowcoder
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300

3.2 启动 elasticsearch 失败解决方法

原因是 netty 启动冲突问题, 需要在 CommunityApplication 编写 init()
package org.example.community;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;

@SpringBootApplication
public class CommunityApplication {
    

    @PostConstruct
    public void init(){
    
         // 解决 netty 启动冲突问题
        // see Netty4Utils.setAvailableProcessors()
        System.setProperty("es.set.netty.runtime.available.processors", "false");
    }
    public static void main(String[] args) {
    
        SpringApplication.run(CommunityApplication.class, args);
    }
}

3.3 elasicsearch 版本冲突解决方案

按照课程流程走的话 elasticsearch 版本和 elasticsearch ik 都是 6.4.3
其次就是Springboot 版本必须是 2.1.5, 高版本的话建议将 Springboot 降低到低版本
如果上面版本太高或者太低会出现各种不兼容的问题

具体做法如下所示:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
<!--        <version>2.5.12</version>-->
    <version>2.1.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

在 pom.xml 文件里面将原来的 version 版本修改为 2.1.5 ,然后 maven 会自动将 2.1.5 需要的配置添加进去,我们这时候需要等待一会,接着我们这样操作:

在 IDEA 中点击 File -> invaildate and restart

当编译器再次启动的时候就可以了。

4. 参考文献

1. SpringBoot 整合 Elasticsearch

5. 联系我

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wyf2017/article/details/125218036

智能推荐

基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具(Mongo2Es)-程序员宅基地

文章浏览阅读252次。基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具(Mongo2Es) 基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具支持一对一,一对多,多对一和多对多的数据传输方式.一对一 - 一个mongodb的collection对应一个elasticsearch的index之间的数据同步一对多 - 一个mong..._旅行者mongoose 2e

java lucene 索引构建_java – Lucene crawler(需要构建lucene索引)-程序员宅基地

文章浏览阅读64次。你问的是两个组成部分:>网络爬虫>基于Lucene的自动索引器首先是勇气:去过那里,做到了.从制作自己的角度来看,我将单独处理这两个组件,因为我不相信你可以使用Lucene做你要求的事情,而不会真正理解下面发生了什么.网络爬虫因此,您有一个网站/目录,您希望“抓取”以收集特定资源.假设它是列出目录内容的任何常见Web服务器,使Web爬虫很容易:只需将其指向目录的根目录并定义用于收集实际..._lucene 构建索引 java

辛丑牛年仲夏记_辛丑年仲夏-程序员宅基地

文章浏览阅读284次。2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/ 2021/06/13完成了外文翻译初稿。实习总结和用户管理手册。_辛丑年仲夏

Vitis HLS 构建项目并生成IP核(Vivado HLS)_vitis hls introductory examples-程序员宅基地

文章浏览阅读1.3w次,点赞22次,收藏106次。Vitis HLS 构建项目并生成IP核(Vivado HLS)_vitis hls introductory examples

华洛机器人_男友约你爬山,在山顶突然推你,这时你会用哪个LOL英雄技能保命?...-程序员宅基地

文章浏览阅读65次。周六早晨,我还在梦里solo纳什男爵,突然听到电话铃声,我男朋友突然约我爬山。爬 山???周六?爬山?这是什么奇妙的组合,再配上我的男朋友,这事儿不能用奇怪来形容了,可以说是——诡异。近半年来,我隐隐感觉到男朋友对我态度的变化他变得更体贴,更温柔,更顺从,但是我确能从这些东西里,从他的眼神里读出不一样的东西,一种完全相反的东西,是暴戾、愤怒,但是他的举止行为没有任何的问题,半年来我一直在怀疑对方和...

时间序列数据的分段线性表示_数据分段算法-程序员宅基地

文章浏览阅读4.3k次,点赞2次,收藏38次。本文思想来自:时间序列数据的分段线性表示PLR算法以拟合误差为阈值,会出现两类问题:采用累积误差进行分段的算法对短时间内大波动数据不敏感,分段效果差;采用平均误差的分段算法在遇到长时间小波动数据后,对明显状态变化处理不敏感,各个子序列的开始与结束时间不精确。即,由于采用累积误差或平均误差,对一些状态变化的拐点不敏感。伪代码:python代码:def Select_Important_Points(T, R): X = [] for i in range(0, len(T_数据分段算法

随便推点

OpenLayers学习笔记(一)—在线加载谷歌影像地图&离线加载本地瓦片地图-程序员宅基地

文章浏览阅读468次。实现根据在线离线判断加载地图, 在线加载谷歌影响地图, 离线加载本地瓦片地图 作者: 狐狸家的鱼 Github: 八至html代码<div id="map" tabindex="0" class="map"></div>tabindex="0"是为了启动键盘事件。js代码..._ol.source.vectortile 谷歌经纬度

python-机器学习-决策树实现_巴纳吉模型 python-程序员宅基地

文章浏览阅读2k次。原创 python-机器学习-决策树实现 ..._巴纳吉模型 python

剑魂之刃服务器维护,剑魂之刃全服合服停机维护预告-程序员宅基地

文章浏览阅读1.2k次。剑魂之刃全服合服停机维护预告,为优化服务器性能,保证玩家良好的游戏环境和游戏体验,我们计划于7月14日对剑魂之刃全服服务器进行停机维护并对部分服务器进行合服及数据优化操作;全服停机维护时间:7月14日凌晨1:00——9:00,可能根据实际维护情况提前或延后,停机维护期间玩家无法正常登陆游戏。维护后,以上所有服务器的玩家将获得如下补偿:1、所有玩家可获得10个中级强化石固定补偿2、自服务器开始维护起..._剑魂之刃为什么停营知乎

argparse 中 add_argument()、parse_args() 参数解析及用法_argparse.argumentparser.add_argument cuda报错-程序员宅基地

文章浏览阅读9.7k次,点赞6次,收藏35次。在 python 编写的程序中,我们经常会看到一片的 argparse 相关代码,而它究竟怎么使用呢?接下来,我们将以例子详细学习它。argparse是什么?argparse 是一个__命令行参数解析__模块。可以轻松编写用户友好的命令行接口,在程序中定义需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。argparse 还会自动生成帮助和使用手册,..._argparse.argumentparser.add_argument cuda报错

计算机视觉课程 安装VSCode+python+opencv环境-程序员宅基地

文章浏览阅读4.2k次,点赞6次,收藏37次。计算机视觉课程(一)安装VSCode+python+opencv环境整个系统我配置了大约3个小时才基本搞定,由于在写博客前就已经安装完成,所以有的出错的地方无法截图展示。先声明一下,我安装的是VSCode+python+opencv,至于是否还有其他未知的兼容问题还需要我日后使用过程中慢慢总结。主要流程参考这个网址:https://blog.csdn.net/qq_21400315/artic...

kafka数据丢失的原因_kafka_exporter: error: unknown long flag '--offset-程序员宅基地

文章浏览阅读3.3k次。数据丢失原因:数据已经被消费但是offset没有提交。原因1:强行kill线程,导致消费后的数据,offset没有提交。原因2:设置offset为自动提交,关闭kafka时,如果在close之前,调用 consumer.unsubscribe() 则有可能部分offset没提交,下次重启会重复消费。原因3(重复消费最常见的原因):消费后的数据,当offset还没有提交时,partiti..._kafka_exporter: error: unknown long flag '--offset.show-all', try --help

推荐文章

热门文章

相关标签