Elasticsearch-SpringBoot整合Elasticsearch

SpringBoot整合Elasticsearch

Elasticsearch-安装与配置

MySQL数据导入到Elasticsearch

使用IK分词器实现搜索

限制Elasticsearch返回的结果集大小

Elasticsearch的Java客户端有好几个。具体可以看
这篇博客:
Elasticsearch的Java客户端
先说整合流程,注意,我这里使用的es是6.1.4版本SpringBoot是2.1.4.RELEASE 版本不一致可能导致出错!!!。 这里是个大坑
这里我采用的是启动器整合

1 添加启动器

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

2 添加配置文件

spring:
  data:
    elasticsearch:
      cluster-name: lixue
      cluster-nodes: 节点的ip地址:9300
      repositories:
        enabled: true

3 创建接口继承ElasticsearchRepository

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Component;
import xyh.lixue.entity.Problem;
@Component
public interface ProblemRepository extends ElasticsearchRepository<Problem,String> {

}

4 实体类

@Data
@Document(indexName = "lixue",type = "problem")
public class Problem implements Serializable {
    //题目id
    @Id
    private String problemId;
    //知识点
    private String knowledgePoint;
    //题目标题
    private String title;
    private String publish;
    //题目图片名字
    private String problemPictureName;
    //答案图片名字
    private String answerPictureName;
    //热度
    private int hotPoint;
}

5 运行

先运行看报错不,我第一次报了下面这个错误。

failed to load elasticsearch nodes 
org.elasticsearch.client.transport.NoNodeAvailableException: 
None of the configured nodes are available:

这个错误信息的意思就是说根据你的配置无法连接这个节点。
可能的原因有一下:

  • 端口不对,注意是9300端口,9200端口是http的端口。这里使用的tcp连接。

  • ip地址有问题,这个也好排查,直接curl 你的地址:9200看是否返回成功的json

  • yml中cluster-name名字与config/elasticsearch.yml中的不一样。

以上三个问题都排查了还是无法解决问题的话,那么恭喜你。很有可能就是版本冲突的问题了。
网上说SpringBoot2.X的spring-boot-starter-data-elasticsearch仅支持es2.X的版本。 最好还是不用随便相信。自己去探索真理不就好了

  • 我们先来看一下这个启动器里面有哪些东西
    在这里插入图片描述
    发现没有,里面就是用了spring-data-elasticsearch3.1.6

  • 那么我们去github上面看看github:spring-data-elasticsearch

spring data elasticsearchelasticsearch
3.2.x6.5.0
3.1.x6.2.2
3.0.x5.5.0
2.1.x2.4.0
2.0.x2.2.0
1.3.x1.5.2
  • spring-data-elasticsearch3.1.6支持到6.2.2。如果你的启动器不适配你安装的elasticsearch版本的话有三种思路

  • 1 更换elasticsearch版本

  • 2 更改SpringBoot的版本

  • 3 改用spring-data-elasticsearch(推荐)

  • 使用spring-data-elasticsearch
    根据github的提示,添加依赖

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>

这里光添加这一个包还是报错,还需要添加两个包。

<!-- elasticsearch -->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>5.6.12</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.plugin</groupId>
    <artifactId>transport-netty4-client</artifactId>
    <version>5.6.12</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>

如果还是报错的话,就调一调前面两个依赖的版本。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值