SpringBoot集成Elasticsearch过程实例

 更新时间:2020年04月03日 09:12:18   作者:闲人鹤  
这篇文章主要介绍了SpringBoot集成Elasticsearch过程实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

  配置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服务已关闭

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java链表元素查找实现原理实例解析

    Java链表元素查找实现原理实例解析

    这篇文章主要介绍了Java链表元素查找实现原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • logback ThresholdFilter临界值日志过滤器源码解读

    logback ThresholdFilter临界值日志过滤器源码解读

    这篇文章主要为大家介绍了logback ThresholdFilter临界值日志过滤器源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java中的static静态代码块的使用详解

    Java中的static静态代码块的使用详解

    本篇文章介绍了,Java中的static静态代码块的使用详解。需要的朋友参考下
    2013-04-04
  • Java 判断字符串a和b是否互为旋转词

    Java 判断字符串a和b是否互为旋转词

    本篇文章主要介绍了判断字符串a和b是否互为旋转词的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05
  • Spring Boot中使用@Value加载配置的方法

    Spring Boot中使用@Value加载配置的方法

    @Value注解相信很多Spring Boot的开发者都已经有接触了,通过使用该注解,我们可以快速的把配置信息加载到Spring的Bean中,这篇文章主要介绍了为什么不推荐在SpringBoot中使用@Value加载配置,需要的朋友可以参考下
    2024-05-05
  • Java 十大排序算法之计数排序刨析

    Java 十大排序算法之计数排序刨析

    计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法
    2021-11-11
  • SpringCloud整合Activiti过程中的踩坑记录

    SpringCloud整合Activiti过程中的踩坑记录

    由于项目需要,最近开始在项目Spring boot中集成工作流引擎Activiti,由于第一次集成,一路上步步都是坑,所以这篇文章主要给大家介绍了关于SpringCloud整合Activiti过程中所遇到的踩坑记录,需要的朋友可以参考下
    2021-09-09
  • springcloud整合到项目中无法启动报错Failed to start bean 'eurekaAutoServiceRegistration'

    springcloud整合到项目中无法启动报错Failed to start bean&n

    这篇文章主要介绍了springcloud整合到项目中无法启动报错Failed to start bean 'eurekaAutoServiceRegistration'问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • java数据库连接池新手入门一篇就够了,太简单了!

    java数据库连接池新手入门一篇就够了,太简单了!

    数据库连接池负责分配、管理和释放数据库连接,释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,这项技术能明显提高对数据库操作的性能
    2021-06-06
  • java ReentrantLock条件锁实现原理示例详解

    java ReentrantLock条件锁实现原理示例详解

    这篇文章主要为大家介绍了java ReentrantLock条件锁实现原理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论