Springboot项目使用Elastic Search教程(完整步骤)

这篇具有很好参考价值的文章主要介绍了Springboot项目使用Elastic Search教程(完整步骤)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Springboot项目使用Elastic Search教程(完整步骤)

最近的项目需要用到Elastic Search,上网查资料的时候发现内容比较分散,搜索起来的时候比较费力,

于是最近入门配置成功之后,稍微总结一下吧。

先给出一些网上的教程

  1. (152条消息) Spring Boot整合Elasticsearch,最新最全教程_spring elasticsearch_Cloud-Future的博客-CSDN博客

    这一篇代码是写的挺清晰的

  2. 查看对应的spring data es和es和springboot对应的版本

    Spring Data Elasticsearch - Reference Documentation

    (152条消息) spring data elasticsearch 对应 elasticsearch 版本_elasticsearch版本兼容_悟能的师兄的博客-CSDN博客

  3. 安装ES的教程

    Windows下搭建ElasticSearch、Logstash以及基本插件_Duui的博客-CSDN博客

  4. spring-data-elasticsearch官方文档

    Spring Data Elasticsearch - Reference Documentation

1. 安装Elastic Search

这个比较简单,先直接去官网上面找到对应的Springboot的版本,然后下载Zip,解压

例如我的springboot版本是2.7.5,所以ES我下的是7.17.3

springboot 使用es,后端,spring boot,elasticsearch,java,后端

ES官网Download Elasticsearch | Elastic

主页右边可以选择过去的版本

解压后直接运行bin文件下的elasticsearch.bat的批处理文件

springboot 使用es,后端,spring boot,elasticsearch,java,后端

然后等待CMD输出一些指令即可运行成功了!

cmd运行内容如图

springboot 使用es,后端,spring boot,elasticsearch,java,后端

在后面运行springboot的时候记得也要同时运行着这个Elastic Search

可以去localhost:9200处查看是否正确的运行;

springboot 使用es,后端,spring boot,elasticsearch,java,后端

2. 安装IK分词器(这个索引当中用了ik_max_word的话就要装)

IK分词器是es的一个插件

我在后面配置好了springboot之后才发现要配置这个

运行spring boot的时候发现有reason=analyzer [ik_max_word] has not been configured in mappings]]的报错

然后搜了一下发现还需要安装分词器

因为在实体类索引当中我使用了分词

springboot 使用es,后端,spring boot,elasticsearch,java,后端

github下载网址 medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary. (github.com),在页面的右侧的release可以查看过去的版本

注意版本要和ElasticSearch的一致!!

分词器也是安装好对应版本(和ES版本一致)的zip文件后,直接解压到ES的plugin文件夹下即可

springboot 使用es,后端,spring boot,elasticsearch,java,后端

安装好后再次运行Elastic Search即可。

3. springboot配置相关依赖

从这个步骤往后都是可以参照我最上面给出的教程网址,跟着走即可

我这里只讲一下大概

3.1 pom导入依赖

只配这个data-elasticsearch就可以了,那个client可以不用,那个有什么用目前我还不会

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

3.2 java 编写相关配置类

这个配置类也很简单,所有的都是这样配置,网上直接找就可以了

/**
 * ElasticSearch 客户端配置
 *
 * @author geng
 * 2020/12/19
 */
@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {
    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                .connectedTo("localhost:9200")
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}
3.3 实体类entity与Dao层

实体类Recipe

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "recipe",createIndex = true)
public class Recipe {
    @Id
    @Field(type = FieldType.Integer)
    private Integer id; //菜谱id
    @Field(type = FieldType.Integer)
    private Integer categoryId;//菜谱种类,外键ID
    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String title;
    @Field(type = FieldType.Keyword)
    private String coverUrl; //食谱封面
    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String mainIngredient;//添有主要食材的名字
	..................
}

关于这些注解的介绍可参考官方文档,或者csdn教程(153条消息) Spring Data Elasticsearch篇(1):常用注解_spring data elasticsearch @field_mykefei的博客-CSDN博客

对应的DAO层非常简单,spring的data-elasticsearch都已经提供好了

public interface ESRecipeDao extends ElasticsearchRepository<Recipe,String> {
    List<Recipe> findByTitleOrMainIngredient(String title,String mainIngredient);
    List<Recipe> findByTitle(String title);

}

这里dao定义了两个函数,都是它自动提供好的,只要你的实体类里面有这些参数,这个函数就可以被自动构建出来,比MybatisPlus还要高级,更详细的用法这里就不介绍了,这个只能实现简单的搜索,还没有分词功能

service层什么的就直接调用Dao层的接口就好了,这里也不展开了。

正确运行后,索引如果正确建立了,也是可以通过接口访问的

springboot 使用es,后端,spring boot,elasticsearch,java,后端

端口后面加上你新建的index(索引)的名称,可以校对一下里面的数据是否和实体类的一一对应

4. 用logstash将Elastic Search和mysql连接起来

4.1 : 下载配置

当所有配置完成后,代码也可以正常运行了,接口可以正常测试了

但是发现返回的什么都没有,原来是忘记了给es本身添加数据了,毕竟ES和MYSQL可没有连接到一起

那么如何往Elastic Search当中添加数据呢?

为了方便,可以使用logstash直接和数据库关联起来,logstash可以很方便的获取各个地方的数据源,并且导入到ES当中

springboot 使用es,后端,spring boot,elasticsearch,java,后端

下载地址:

Download Logstash Free | Get Started Now | Elastic

下载教程:

(152条消息) 安装 ElasticSearch 并连接mysql数据库_elasticsearch怎么和数据库关联_liyongbing1122的博客-CSDN博客

注意教程里面还需要下载一个mysql的JDBC驱动,自己去Oracle下载就好了,

下好后直接将jar包放入下载logstash的路径\logstash-7.17.3\logstash-core\lib\jars

(不过网上好像说也不一定要放这个位置,反正我是放了)

在logstash的bin目录下新建logstash-mysql.conf配置文件,感觉logstash本身就是面向各种数据源进行配置的

input {
    stdin {
    }
    jdbc {
      # 数据库  数据库名称为elk,表名为book_table
      jdbc_connection_string => "jdbc:mysql://localhost:3306/elk"
      # 用户名密码
      jdbc_user => "admin"
      jdbc_password => "password"
      # jar包的位置
      jdbc_driver_library => "/usr/elastic/logstash-6.5.3/mysql-connector-java-8.0.13.jar"
      # mysql的Driver
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      #statement_filepath => "config-mysql/book.sql"
      statement => "select * from book_table"
      schedule => "* * * * *"
	  #索引的类型
      type => "book"
    }
}
 
filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}
 
output {
    elasticsearch {
        hosts => "127.0.0.1:9200"
        # elasticsearch当中你要用的那个index名,对应数据库的数据表
		index => "recipe"
		# 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}
4.2 运行

一开始以为一定要先用这条指令

./logstash -e 'input { stdin { } } output { stdout {} }'

但是这条一直无法运行

报错类似于 JAVA JDK的问题

一开始说不支持当前版本,8.0以前的已经弃用,然后要9.0以上的版本

然后现在又说

删掉了1.8的Java之后,变成如下报错

DEPRECATION: The use of JAVA_HOME is now deprecated and will be removed starting from 8.0. 

接着我使用了logstash捆绑自带的jdk,然后放到环境变量LS_JAVA_HOME还是报错,

Using LS_JAVA_HOME defined java: D:\RookieCODE\Tools\LogStash\logstash-7.17.3\jdk
WARNING: Using LS_JAVA_HOME while Logstash distribution comes with a bundled JDK.
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

这里那不就是9.0也要弃用吗

然后其实换了捆绑的jsk之后

直接用数据库配置的命令就成功了

logstash -f logstash-mysql.conf

不过记得要先启动elasticsearch,然后再用上面的指令,即可正确导入数据

springboot 使用es,后端,spring boot,elasticsearch,java,后端

导入成功的话会有数据记录显示在控制台

如果没有更新那么重新运行程序也不会导入(即使你修改了config文件)

如果每次更新了数据库就重新在logstash的bin目录cmd下重新运行上面的那条配置指令即可


5. 总结

经过上面的步骤就配置完成了,运行成功后sprinboot的cmd如下

springboot 使用es,后端,spring boot,elasticsearch,java,后端

使用apifox进行测试

springboot 使用es,后端,spring boot,elasticsearch,java,后端

其实从零开始的话要配置的东西还是挺多的,也要查挺多文章,但是所幸elasticsearch和它的插件还有相关的工具的下载和安装并不麻烦(解压即可用),使用起来难度还是不高的。

当时搜了挺多文章的资料的,想着把他们整合到一起,希望能够帮助到需要的小伙伴。
d下重新运行上面的那条配置指令即可


5. 总结

经过上面的步骤就配置完成了,运行成功后sprinboot的cmd如下

[外链图片转存中…(img-sOj2CV5n-1685955517620)]

使用apifox进行测试

[外链图片转存中…(img-EwGGVFwu-1685955517620)]

其实从零开始的话要配置的东西还是挺多的,也要查挺多文章,但是所幸elasticsearch和它的插件还有相关的工具的下载和安装并不麻烦(解压即可用),使用起来难度还是不高的。

当时搜了挺多文章的资料的,想着把他们整合到一起,希望能够帮助到需要的小伙伴。文章来源地址https://www.toymoban.com/news/detail-724650.html

到了这里,关于Springboot项目使用Elastic Search教程(完整步骤)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 关于PHP 使用 Elastic Search8的相关经历

    你好! 如果你也是第一次使用ES8和PHP对接使用,这里或许有一些心得可以为你解决一些问题。 windows 版本搭建 Elastic Search 如下图,通过官网下载一个windows版本的Elastic Search 执行.bat文件即可启动 https://localhost:9200 默认的是ssl证书 ES8登录是需要账户密码的,windows启动ES8以后,

    2024年02月15日
    浏览(32)
  • 【elastic search】JAVA操作elastic search

    目录 1.环境准备 2.ES JAVA API 3.Spring Boot操作ES 本文是作者ES系列的第三篇文章,关于ES的核心概念移步: https://bugman.blog.csdn.net/article/details/135342256?spm=1001.2014.3001.5502 关于ES的下载安装教程以及基本使用,移步: https://bugman.blog.csdn.net/article/details/135342256?spm=1001.2014.3001.5502 在前文

    2024年01月25日
    浏览(35)
  • Elastic Search一些用法

    参考: 中国开源社区 官方介绍 ES 的权重排序 【Elasticsearch】ElasticSearch 7.8 多字段权重排序 ElasticSearch7.3学习(十三)----定制动态映射(dynamic mapping) 【Elasticsearch教程4】Mapping 动态映射 【Elasticsearch教程5】Mapping 动态模板 Dynamic templates 注意事项:需要先创建模板,然后添加数据

    2024年02月06日
    浏览(33)
  • elastic search入门

    参考1:Elastic Search 入门 - 知乎 参考2:Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客 1、ElasticSearch安装 1.1安装JDK,省略,之前已安装过 1.2创建ES用户 1.3 下载ElasticSearch安装包 Ubuntu上下载: 然后解压: 1.4配置 配置jvm.options 配置elasticsearch.yml: 根据以上设置的path.data和path.l

    2024年01月23日
    浏览(36)
  • SpringCloud整合Elastic Search

    1、配置Elastic Search 注释说明: spring.elasticsearch.rest.uris :设置Elastic Search的连接地址,这里的示例是本地地址 http://localhost:9200 ,根据实际情况修改。 spring.elasticsearch.username 和 spring.elasticsearch.password :设置Elastic Search的用户名和密码,如果没有设置访问控制,这两项可以省略

    2024年02月15日
    浏览(35)
  • Elastic Search 命令详解-索引操作

    关于Elastic Search安装可以参考《Elastic Search 8.6.2集群安装部署》及Kibana安装可以参考《Elastic Search 8.6.2简单操作》。相关命令将在Kibana工具的Console平台上执行。 Elastic Search索引操作主要包含:创建、删除、关闭和打开索引,以及索引别名的操作。其中,索引别名的操作在生产环

    2024年02月08日
    浏览(32)
  • 【搜索引擎】elastic search核心概念

    前言 本文不涉及ES的具体安装下载、操作、集群的内容,这部分内容会放在后面一篇文章中。本文只包含ES的核心理论,看完本文再去学ES的细节会事半功倍。 目录 1.由日志存储引出的问题 2.什么是ES? 3.ES的数据结构 4.ES的核心原理 5.联系作者 本文或者说本系列的来源: 前面

    2024年02月03日
    浏览(37)
  • Elastic Search的RestFul API入门:如何进行ES的查询-search

    在这篇教学文章中,我们将深入探讨Elasticsearch的search功能。这是一个非常强大且灵活的功能,它允许我们对存储在Elasticsearch中的数据进行各种复杂的查询和分析。本章的目标是让读者理解如何进行Elasticsearch的搜索,以及如何在搜索过程中自主调整搜索参数,从而灵活地控制

    2024年02月03日
    浏览(38)
  • ES完整使用从安装到springboot项目操作

    1. ES的原理和基本概念 ES一般使用保存日志数据,对数据做日志做一些管理,ElasticSearch(resful风格)数据只有json类型的, ElastricSearch和Solr都是基于 Lucene 的全文搜索引擎服务器 Lucene: apache的子项目开源的全文搜索引擎工具包 倒排索引: 通过term或者说某个词记录其所在的文档

    2024年02月12日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包