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文件


    org.springframework.boot
    spring-boot-parent
    2.1.6.RELEASE
  

  
    
      org.springframework.boot
      spring-boot-starter-data-elasticsearch
    
  

注意: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 {
}

测试用例

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

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


新闻标题:SpringBoot集成Elasticsearch过程实例
链接分享:http://myzitong.com/article/jscjip.html