irpas技术客

十、SpringBoot与检索(Elasticsearch)_qq_19768387

网络投稿 1114

检索组件elasticsearch 一、ElasticSearch简介1.简介2.docker安装 二、elasticsearch操作三、SpringBoot整合Elasticsearch1.引入maven依赖2. 自动配置3. yml配置文件4.RestHighLevelClient操作elasticsearch5. ElasticsearchRestTemplate 操作elasticsearch6.ElasticsearchRepository操作elasticsearch

一、ElasticSearch简介 1.简介

Elasticsearch是一个分布式搜索服务,提供restful API 底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能,github等大型站点也是采用了Elasticsearch作为其搜索服务;

2.docker安装 搜索镜像docker search elasticsearch 拉取镜像docker pull elasticsearch:7.17.1 查看镜像docker images 启动镜像 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --name ES01 515ab4fba870 验证启动成功 访问:http://192.168.1.XXX:9200,返回以下JSON数据:{ "name" : "5ab04951e8e0", "cluster_name" : "docker-cluster", "cluster_uuid" : "v_6fQnhsQ8i1S0faXaTo2A", "version" : { "number" : "7.17.1", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a", "build_date" : "2022-02-23T22:20:54.153567231Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } 二、elasticsearch操作

具体操作参考: elasticsearch官方文档【中文】 或者关注后续的elasticsearch学习文档

三、SpringBoot整合Elasticsearch 1.引入maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> 2. 自动配置 SpringBoot默认支持两种技术和ES进行交互; 在SpringBoot1.X版本默认使用spring-data-elasticsearch和jest两种客户端和elasticsearch进行交互,但是随着jest在2018年停止维护,以及elasticsearch官方大力推荐RestHighLevel API对elasticsearch进行操作,spring官方在2.X版本移除了jest并加入了RestHighLevelClient;org.springframework.boot.autoconfigure在自动配置包下的data.elasticsearch和elasticsearch下分别对应两种ES加护技术;org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration中引入了ElasticsearchRestTemplate和ElasticsearchRepositoryorg.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration引入RestHighLevelClient 3. yml配置文件 spring: elasticsearch: uris: http://192.168.1.132:9200 4.RestHighLevelClient操作elasticsearch @Autowired RestHighLevelClient restHighLevelClient; @Test void contextLoads() throws IOException { final GetRequest getRequest = new GetRequest(); getRequest.id("1"); getRequest.index("book"); final GetResponse documentFields = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT); final String sourceAsString = documentFields.getSourceAsString(); System.out.println("sourceAsString = " + sourceAsString); } 5. ElasticsearchRestTemplate 操作elasticsearch @Autowired ElasticsearchRestTemplate template; @Test void contextLoads3() throws IOException { final Book book = template.get("1", Book.class); System.out.println("book = " + book); } 6.ElasticsearchRepository操作elasticsearch 编写某个bean的关联ElasticsearchRepository 自定义规则参考spring-data官方文档 public interface BookRepository extends ElasticsearchRepository<Book,Long> { List<Book> findByAuthorLike(String author); } 操作方法 @Autowired BookRepository repository; @Test void contextLoads() { /*Book book = new Book(1L,"红楼梦","曹雪芹"); repository.save(book);*/ for (Book book1 : repository.findAll()) { System.out.println("book1 = " + book1); } }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #springboot #集成elasticsearch