SpringBoot集成Elasticsearch过程实例

作者:闲人鹤 时间:2022-07-30 20:08:56 

1. 准备工作

需要提前安装好Elasticsearch,访问地址:http://127.0.0.1:9200/ 得到以下结果,得到cluster_name,下面配置使用。


{
"name" : "O8GslS3",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "pviTqfXtR3GtnxF-Po-_aA",
"version" : {
 "number" : "6.5.0",
 ......
},
"tagline" : "You Know, for Search"
}

2. 使用Maven创建SpringBoot工程

配置Maven的pom.xml文件


<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-parent</artifactId>
   <version>2.1.6.RELEASE</version>
 </parent>

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

注意:spring-boot-starter-data-elasticsearch包,引用的是spring-data-elasticsearch包,而spring-data-elasticsearch包的版本与elasticsearch服务版本是有兼容性问题的。

目前并不支持elasticsearch7.x,参考:https://github.com/spring-projects/spring-data-elasticsearch

SpringBoot集成Elasticsearch过程实例

配置application.yml文件


spring:
data:
 elasticsearch:
  cluster-name: docker-cluster
  cluster-nodes: 127.0.0.1:9300
  repositories:
   enabled: true

3. 代码

实体类。使用@Document注解,参数indexName是索引名称,type是type名称。


// 声明索引名称,type名称@Document(indexName = "houseindex", type = "house")
public class HouseIndexTemplate {

@Id
 private Long id;
 private String name; ......
}

访问接口。使用@Repository注解,并继承ElasticsearchRepository接口,就可以直接访问的。

有两个参数:1.返回的对象,2.ID参数数据类型


@Repository
public interface HouseRepository extends ElasticsearchRepository<HouseIndexTemplate, Long> {
}

测试用例


@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class UserServiceTest {

@Autowired
 private HouseRepository houseRepository;

@Test
 public void selectUser(){    HouseIndexTemplate template = new HouseIndexTemplate();    template.setId(1);    template.setName("Tom");
   houseRepository.save(template);
 }

}

4. 异常解释

问题1: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{IVH9QII0QrOU9GkXdsJPiA}{127.0.0.1}{127.0.0.1:9300}]]

原因:这是说配置的节点不可用,原因答题有3种可能:(1)IP地址或端口填写有误;(2)cluster_name填写有误;(3)Elasticsearch服务已关闭

来源:https://www.cnblogs.com/huanshilang/p/12622356.html

标签:Spring,Boot,集成,Elasticsearch
0
投稿

猜你喜欢

  • Spring boot如何集成kaptcha并生成验证码

    2023-09-13 04:00:24
  • Spring Cloud Gateway整合sentinel 实现流控熔断的问题

    2022-01-18 23:10:05
  • 实例解析Java中的构造器初始化

    2022-11-22 07:42:27
  • 详解Java中的线程池

    2023-11-10 16:33:27
  • Java面试题冲刺第十六天--消息队列

    2022-08-08 09:07:04
  • JAVA得到数组中最大值和最小值的简单实例

    2023-03-18 01:19:39
  • SpringBoot登录验证码实现过程详解

    2023-04-26 12:24:05
  • Java压缩文件ZIP实例代码

    2022-03-25 04:08:27
  • 一篇文章超详细的介绍Java继承

    2023-11-23 08:30:12
  • java插入排序 Insert sort实例

    2023-07-21 07:07:37
  • Spring中的aware接口详情

    2023-11-29 10:48:29
  • Java ArrayList源码深入分析

    2023-06-16 16:30:26
  • SpringBoot中自定义注解实现参数非空校验的示例

    2022-04-12 10:55:55
  • 详解Java单元测试之Junit框架使用教程

    2022-03-06 02:55:56
  • Java提取2个集合中的相同和不同元素代码示例

    2023-11-28 05:48:41
  • Java 反射类型Type的用法说明

    2023-01-23 04:15:44
  • Java 中的Printstream介绍_动力节点Java学院整理

    2021-12-21 06:08:36
  • java异步上传图片示例

    2023-05-31 13:42:51
  • ios百度地图的使用(普通定位、反地理编码)

    2023-07-03 15:26:17
  • 详解Flutter网络图片本地缓存的实现

    2023-08-18 19:44:43
  • asp之家 软件编程 m.aspxhome.com