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.bootgroupId>
    <artifactId>spring-boot-starter-data-elasticsearchartifactId>
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的版本。 最好还是不用随便相信。自己去探索真理不就好了

  • 我们先来看一下这个启动器里面有哪些东西
    Elasticsearch-SpringBoot整合Elasticsearch_第1张图片
    发现没有,里面就是用了spring-data-elasticsearch3.1.6

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

spring data elasticsearch elasticsearch
3.2.x 6.5.0
3.1.x 6.2.2
3.0.x 5.5.0
2.1.x 2.4.0
2.0.x 2.2.0
1.3.x 1.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.datagroupId>
    <artifactId>spring-data-elasticsearchartifactId>
    <version>3.0.11.RELEASEversion>
dependency>

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


<dependency>
    <groupId>org.elasticsearchgroupId>
    <artifactId>elasticsearchartifactId>
    <version>5.6.12version>
dependency>
<dependency>
    <groupId>org.elasticsearch.plugingroupId>
    <artifactId>transport-netty4-clientartifactId>
    <version>5.6.12version>
dependency>
<dependency>
    <groupId>org.springframework.datagroupId>
    <artifactId>spring-data-elasticsearchartifactId>
    <version>3.0.11.RELEASEversion>
dependency>

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

你可能感兴趣的:(SpringBoot,Elasticsearch)