SpringBoot 2.x (12):整合Elasticsearch
程序员文章站
2022-04-14 15:41:05
Elasticsearch:一个优秀的搜索引擎框架 搜索方面最基本的是SQL的like语句 进一步的有Lucene框架 后来有企业级的Solr框架 而Elasticsearch框架尤其适合于数据量特别大的 Elasticsearch底层也是由Lucene实现的 应用:Github、*、Stac ......
elasticsearch:一个优秀的搜索引擎框架
搜索方面最基本的是sql的like语句
进一步的有lucene框架
后来有企业级的solr框架
而elasticsearch框架尤其适合于数据量特别大的
elasticsearch底层也是由lucene实现的
应用:github、*、*
elasticsearch部署:
纯java开发,因此必备jdk
采用5.6版本而不是最新版,因为springboot可能不支持
推荐部署到linux服务器,但是这里为了方便我直接部署在本地windows系统
下载地址:
下载好进入bin目录,运行elasticsearch.bat运行
如果报错,通常情况是机器配置不够或者以错误地root权限启动了
win10高配机器不存在这种问题
http://127.0.0.1:9200/:进入主页
http://localhost:9200/_cat/health?v:查看集群状态
localhost:9200/_cat/indices?v:查看索引列表
参考官网,创建索引:
查看我创建的索引:
加入数据:
查看我加入的数据:
springboot进行整合
依赖:
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-elasticsearch</artifactid> </dependency>
查看依赖后发现,springboot2.1.4采用的elasticsearch是6.4.3版本
为了确保不出问题,我重新下载6.4.3版本,事后我验证了,就以下的这些基本操作,es的版本可以不影响
新建实体类article:
搜索的对象就是文章
package org.dreamtech.esdemo.domain; import java.io.serializable; import org.springframework.data.elasticsearch.annotations.document; /** * 文章对象 * * @author xu yiqing * */ @document(indexname = "blog", type = "article") public class article implements serializable { private static final long serialversionuid = 8210249797764830332l; private long id; private string title; private string summary; private string content; private int pv; public long getid() { return id; } public void setid(long id) { this.id = id; } public string gettitle() { return title; } public void settitle(string title) { this.title = title; } public string getsummary() { return summary; } public void setsummary(string summary) { this.summary = summary; } public string getcontent() { return content; } public void setcontent(string content) { this.content = content; } public int getpv() { return pv; } public void setpv(int pv) { this.pv = pv; } }
对es进行配置:
spring.data.elasticsearch.cluster-name=elasticsearch spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300 spring.data.elasticsearch.repositories.enabled=true
对es进行操作默认的接口:
package org.dreamtech.esdemo.repository; import org.dreamtech.esdemo.domain.article; import org.springframework.data.elasticsearch.repository.elasticsearchrepository; import org.springframework.stereotype.component; @component public interface articlerepository extends elasticsearchrepository<article, long> { }
controller层测试代码:
package org.dreamtech.esdemo.controller; import org.dreamtech.esdemo.domain.article; import org.dreamtech.esdemo.repository.articlerepository; import org.elasticsearch.index.query.querybuilder; import org.elasticsearch.index.query.querybuilders; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.getmapping; import org.springframework.web.bind.annotation.restcontroller; @restcontroller public class articlecontroller { @autowired private articlerepository articlerepository; @getmapping("/save") public object save(long id, string title) { article article = new article(); article.setid(id); article.setpv(123); article.setcontent("springboot整合elasticsearch"); article.settitle(title); article.setsummary("搜索框架整合"); articlerepository.save(article); return "save"; } @getmapping("/search") public object search(string title) { querybuilder querybuilder = querybuilders.matchquery("title", title); iterable<article> list = articlerepository.search(querybuilder); return list; } }
实际测试:
用这种方式保存多个文章后就可以进行搜索了:
推荐阅读
-
SpringBoot 2.x 开发案例之 Shiro 整合 Redis
-
SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
-
springboot整合Elasticsearch实现增删改查
-
SpringBoot整合Elasticsearch并实现CRUD操作
-
SpringBoot 2.x 整合Mybatis三:tk.mybatis
-
SpringBoot整合Elasticsearch7.2.0的实现方法
-
SpringBoot2.x系列二:整合第三方组件Mybatis、JPA、Redis、Elasticsearch、ActiveMQ、Kafka、Logback
-
SpringBoot2.x系列教程55--NoSQL之SpringBoot整合ElasticSearch方式二
-
SpringBoot2.x系列教程54--NoSQL之SpringBoot整合ElasticSearch方式一
-
Spring Boot 学习(12)springboot 整合 swagger2