ElasticSearch的安装以及与springboot的集成
前言:
elasticseach简称es,现在用得非常广泛,像百度等一些知名互联网公司都有用到es。那么es到底是什么呢?如何使用呢?下面就一起来学习一下。
一、es简介:
es是一个高度可扩展的开源全文搜索和分析引擎,可以快速的、近实时地对大数据进行存储、搜索和分析,用来支撑复杂的数据搜索需求和企业级应用。简单来说,它是一个搜索引擎,可以实现全文搜索,功能类似于lucene和solr。
二、es的安装:
下面介绍es的安装以及head插件的安装,都是在Windows上的安装。
1、es的安装:
(1)、下载:https://www.elastic.co/downloads/elasticsearch。
(2)、安装:安装很简单,只需解压即可。解压后进入bin目录,运行里面的elasticsearch.bat,即可运行es。、
(3)、注册为Windows服务:每次启动都要运行这个文件很麻烦,可以将es注册为windows的本地。
在cmd命令窗口进入es的bin目录,然后执行如下命令:elasticsearch-service.bat install
执行成功后就可以看到es的服务了:
(4)、访问es:
启动redis服务后,访问localhost:9200
即可看到如下界面:
2、head插件的安装:
head插件可以很方便的操作es,head插件与es的关系就像navicat与MySQL数据库的关系,不过head插件的界面也是通过访问网址浏览的。
(1)、下载head插件:https://github.com/search?q=elasticsearch-head
下载好上图这个解压。
(2)、安装node.js: https://nodejs.org/en/download/
head插件需要node.js的支持,所以要安装它。
安装一路next即可。输入
node -v
若出现node.js的版本信息,则安装成功。 (3)、安装grunt:
运行head需要借助grunt命令,所以要安装。
在cmd窗口进入node.js安装的根目录,然后执行npm install -g grunt -cli
。
(4)、安装pathomjs:
在cmd命令窗口进入head插件解压后的根目录,然后执行npm install
(5)、连接es:
在es的安装根目录的config目录下有elasticsearch.yml,在此文件中添加如下内容:
(6)、运行head:
在cmd命令窗口进入head插件解压后的根目录,然后执行grunt server
,如下图就启动成功。
然后访问
localhost:9100
看到如下画面就安装成功。 三、springboot集成es:
点我下载源码。
1、添加依赖:
build.gradle:
dependencies { compile('org.springframework.boot:spring-boot-starter-data-elasticsearch') //集成es还需要这个依赖,不然会报classNotfound的错误 compile('net.java.dev.jna:jna:4.3.0') compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') }
以上是整个项目用到的依赖,也就是说,集成es只需要data-elasticsearch
和jna
依赖。
2、实体层:
EsBlog.java:
import java.io.Serializable; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; @Document(indexName = "blog",type = "blog")//elasticsearch的注解 public class EsBlog implements Serializable { private static final long serialVersionUID = 4564729518133694581L; @Id private String id; private String title; private String summary; private String content; }
3、repository:
EsBlogRepository.java:
import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import com.zhu.estest.entity.EsBlog; public interface EsBlogRepository extends ElasticsearchRepository<EsBlog, String> { /** * 分页查询博客 * @param title * @param summary * @param content * @param pageable * @return */ Page<EsBlog> findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(String title,String summary,String content,Pageable pageable); }
这里就定义了一个方法,方法名非常长,它也和jpa一样,按照规则定义方法就不用自己去实现。这个方法就是分页查找包含指定title或summary或content的内容。
4、junit测试:
EsBlogRepositoryTest.java:
@RunWith(SpringRunner.class) @SpringBootTest public class EsBlogRepositoryTest { @Autowired private EsBlogRepository esBlogRepository; @Before public void initRepository() { //清除所有数据 esBlogRepository.deleteAll(); //存入数据 esBlogRepository.save(new EsBlog("登鹳雀楼","王之涣的诗", "白日依山尽,黄河入海流。欲穷千里目,更上一层楼。")); esBlogRepository.save(new EsBlog("相思","王维的诗", "红豆生南国,春来发几枝。愿君多采撷,此物最相思。")); esBlogRepository.save(new EsBlog("静夜思","李白的诗", "床前明月光,疑是地上霜。举头望明月,低头思故乡。")); } @Test public void test() { Pageable pageable = new PageRequest(0, 20); String title = "思"; String summary = "相思"; String content = "相思"; Page<EsBlog> page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining( title, summary, content, pageable); System.out.println(page.getTotalElements()); for(EsBlog blog : page.getContent()) { System.out.println(blog); } } }
这个测试类先往es中添加了三首唐诗作为数据,然后调用repository中的方法,查找title中含有“思”字或者summary中含有“相思”或者content中含有“相思”的内容。理论上应该返回除了登鹳雀楼以外的两条数据。
运行junit确实返回两条数据。
5、controller层:
EsBlogController.java:
@RestController @RequestMapping("/blogs") public class EsBlogController { @Autowired private EsBlogRepository esBlogRepository; @GetMapping public List<EsBlog> list(@RequestParam("title") String title, @RequestParam("summary") String summary, @RequestParam("content") String content, @RequestParam(value="pageIndex",defaultValue="0") int pageIndex, @RequestParam(value="pageSize",defaultValue="10") int pageSize){ Pageable pageable = new PageRequest(pageIndex, pageSize); //数据是在junit测试中初始化的 Page<EsBlog> page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining( title, summary, content, pageable); return page.getContent(); } }
在浏览器中访问:
测试通过。
总结:
本文提供的es以及head插件的安装是在Windows上的安装,Linux和mac可能会有不同。至于springboot集成es,主要就是添加两个依赖,然后repository继承ElasticsearchRepository即可。ElasticsearchRepository接口封装了一些操作es的方法,我们直接调用就行,或者根据命名规则定义的方法,也不用自己实现,就类似于springData Jpa。
以上内容属于个人笔记整理,如有错误,欢迎批评指正!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java之-------LeetCode--------784. 字母大小写全排列
public List<String> letterCasePermutation(String S) { List<String> res = new LinkedList<>(); dfs("", S, res, 0); return res; } public void dfs(String pre, String S, List<String> res, int index) { System.out.println(pre+"-----------"); // 判断结束的条件,因为没有for循环所以只能这么判断 if (index == S.length()) res.add(pre); else { //System.out.println(pre + "//////////////" + index); char ch = S.charAt(index); // 指定这是一个字母啊,就是数字, if (!Character.isLetter(ch)) dfs(pre + ch, S, res, index + 1); els...
- 下一篇
JVM笔记10-性能优化之高级特性
一.垃圾回收器配置和 GC 日志分析 1.堆典型配置: 32位的操作系统限制堆大小介于1.5G到2G,64位操作系统无限制,同时系统可用虚拟内存和可用物理内存都会限制最大堆的配置。 堆空间分配典型配置: 1.-Xms:初始堆大小 2.-Xmx:最大堆大小 3.-XX:NewSize=n:设置年轻代大小 4.-XX:NewRatio=n:设置年轻代和年老代的比值。如 n 为 2,表示年轻代与年老代比值为 1:2,年轻代占整个年轻代年老代和的 1/3 5.-XX:SurvivorRatio=n:年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor 区有两个。如 n 为 2,表示 Eden:Survivor=1:2,一个 Survivor 区占整个年轻代的 1/4 6.-XX:MaxMetaspaceSize=:设置最大化元空间大小 7.XX:MetaspaceSize=64m 初始化元空间大小; 8.-Xmn2g:设置年轻代大小为 2G。整个 JVM 内存大小 = 年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为 64m,所以增大年轻代后,将会减...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程