1. 准备工作
需要提前安装好Elasticsearch,访问地址:http://127.0.0.1:9200/ 得到以下结果,得到cluster_name,下面配置使用。
1 2 3 4 5 6 7 8 9 10 | { "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文件
1 2 3 4 5 6 7 8 9 10 11 12 | < 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文件
1 2 3 4 5 6 7 | spring: data: elasticsearch: cluster-name: docker-cluster cluster-nodes: 127.0.0.1:9300 repositories: enabled: true |
3. 代码
实体类。使用@Document注解,参数indexName是索引名称,type是type名称。
1 2 3 4 5 6 7 | // 声明索引名称, type 名称@Document(indexName = "houseindex" , type = "house" ) public class HouseIndexTemplate { @Id private Long id ; private String name; ...... } |
访问接口。使用@Repository注解,并继承ElasticsearchRepository接口,就可以直接访问的。
有两个参数:1.返回的对象,2.ID参数数据类型
1 2 3 | @Repository public interface HouseRepository extends ElasticsearchRepository<HouseIndexTemplate, Long> { } |
测试用例
1 2 3 4 5 6 7 8 9 10 11 12 13 | @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://zxbcw.cn/post/184053/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)