SpringBoot集成Elasticsearch实战

技术文章第一时间送达!

作者:废物大师兄

cnblogs.com/cjsblog/p/9756978.html

1. 前言

1.1. 集成方式

Spring Boot中集成Elasticsearch有4种方式:

REST Client

Jest

Spring Data

Spring Data Elasticsearch Repositories

本文用后面两种方式来分别连接并操作Elasticsearch

1.2. 环境与配置

服务端:elasticsearch-6.3.2 1台

客户端:elasticsearch 6.4.1

服务端配置文件:elasticsearch.yml

/etc/security/limits.conf

/etc/sysctl.conf

1.3. 版本

Spring Boot 2.0.5默认的elasticsearch版本很低,这里我们用最新版本6.4.1

如果启动过程中出现

java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/InetSocketTransportAddress

则说明,elasticsearch依赖的jar包版本不一致,统一改成6.4.1即可

另外,Spring Boot 2.0.5依赖的spring-data-elasticsearch版本是3.0.1,需要升级到3.1.0

2. 依赖

3. application.properties

也许,大家会疑惑,配置文件中明明写的端口是9200,为何这里配置文件中连接的时候写的端口是9300呢?

因为,配置9200是通过HTTP连接的端口,9300是TCP连接的端口

4. 操作

4.1. 使用Spring Data Elasticsearch Repositories操作Elasticsearch

首先,定义一个实体类

这里定义了Commodity实例,表示商品。在Elasticsearch 6.X 版本中,不建议使用type,而且在7.X版本中将会彻底废弃type,所以此处我只指定了indexName,没有指定type。这里,一个Commodity代表一个商品,同时代表一条索引记录。

类比关系型数据库的话,Index相当于表,Document相当于记录

然后,需要自己定义一个接口,并继承ElasticsearchRepository

这里的Repository相当于DAO,操作mysql还是elasticsearch都是一样的

接下来,定义service接口

实现类

在这个Service中演示了增删查改操作,还有分页查询

最后,写一个测试类测试其中的方法

以上,便是使用Elasticsearch Repositories的方式

4.2. 使用ElasticsearchTemplate方式操作Elasticsearch

ElasticsearchTemplate是自动配置的

5. 演示

6. 工程结构

7. 参考

https://docs.spring.io/spring-data/elasticsearch/docs/3.1.0.RELEASE/reference/html/#repositories.query-methods.details

转发出去,让更多的同学可以看到这篇文章吧~

点个"

在看

",再走呗

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190813A04OV500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券