ElasticSearch的安装以及与springboot的集成
ElasticSearch的安装以及与springboot的集成
前言:
elasticseach简称es,现在用得非常广泛,像百度等一些知名互联网公司都有用到es。那么es到底是什么呢?如何使用呢?下面就一起来学习一下。
一、es简介
es是一个高度可扩展的开源全文搜索和分析引擎,可以快速的、近实时地对大数据进行存储、搜索和分析,用来支撑复杂的数据搜索需求和企业级应用。简单来说,它是一个搜索引擎,可以实现全文搜索,功能类似于lucene和solr。
二、es的安装:
官方网站自行下载:https://www.elastic.co/downloads/elasticsearch
安装很简单,只需解压即可。解压后进入bin目录,运行里面的elasticsearch.bat,即可运行es。
elasticsearch弹簧数据弹性搜索对Springboot与Elasticsearch有要求,可参考https://github.com/spring-projects/spring-data-elasticsearch,我的Springboot是2.1.2,下载的Elasticsearch-6.2.2,你可以根据自己的情况下载。
另外,我在Elasticsearch-6.2.2运行elasticsearch.bat时候出现一个问题\ Java \ jdk1.8.0_151 \ bin \ java.exe“-cp”C:……………
解决:如果你的java安装在C:\ Program Files(x86)下,那么在下面设置JAVA_HOME
设置JAVA_HOME = C:\ Progra~2 \ Java \ jre1.8.0_131
如果你的java安装在C:\ Program Files下,那么设置JAVA_HOME就像下面
设置JAVA_HOME = C:\ Progra~1 \ Java \ jre1.8.0_131
解决问题的链接:https://discuss.elastic.co/t/unable-to-start-elasticsearch-6-2-0-in-windows-10/118851/5
三、springboot集成es:
项目依赖:
<dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--data-elasticsearch--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>4.3.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
以上是整个项目用到的依赖,也就是说,集成es只需要data-elasticsearch和jna依赖。
实体Blog
/*** Create bySeptember* 2019/2/11* 16:34*/
@Document(indexName = "blog",type = "blog") //文档
public class Blog implements Serializable {private static final long serialVersionUID = 299997038365626833L;@Idprivate String id; // 主键private String title;private String summary;private String content;protected Blog() { //JPA规范要求}public Blog(String title, String summary, String content) {this.title = title;this.summary = summary;this.content = content;}//省略get/set@Overridepublic String toString() {return "Blog{" +"id='" + id + '\'' +", title='" + title + '\'' +", summary='" + summary + '\'' +", content='" + content + '\'' +'}';}
}
仓库repository
/*** Create bySeptember* 2019/2/11* 16:35*/
//Blog 存储库
public interface BlogRepository extends ElasticsearchRepository<Blog,String> {Page<Blog> findDistinctBlogByTitleContainingOrSummaryContainingOrContentContaining(String title, String summary,String content, Pageable pageable);
}
这里就定义了一个方法,方法名很长,它和jpa一样,按照规则定义方法就不用自己去实现。这个方法就是分页查找包含指定title或summary或content的内容。
junit测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class BlogRepositoryTest {@Autowiredprivate BlogRepository blogRepository;@Beforepublic void initRepository(){//清除所有数据blogRepository.deleteAll();//存入数据blogRepository.save(new Blog("登鹳雀楼","王之涣的诗","白日依山尽,黄河入海流。欲穷千里目,更上一层楼。"));blogRepository.save(new Blog("相思","王维的诗","红豆生南国,春来发几枝。愿君多采撷,此物最相思。"));blogRepository.save(new Blog("静夜思","李白的诗","床前明月光,疑是地上霜。举头望明月,低头思故乡。"));}@Testpublic void testfindDistinctBlogByTitleContainingOrSummaryContainingOrContentContaining(){Pageable pageable = new PageRequest(0, 20);String title = "思";String summary = "相思";String content = "相思";Page<Blog> page = blogRepository.findDistinctBlogByTitleContainingOrSummaryContainingOrContentContaining(title, summary,content, pageable);assertThat(page.getTotalElements()).isEqualTo(2);for (Blog blog: page.getContent()){System.out.println(blog.toString());}}
}
这个测试类先往es中添加了三首唐诗作为数据,然后调用repository中的方法,查找title中含有“思”字或者summary中含有“相思”或者content中含有“相思”的内容。理论上应该返回除了登鹳雀楼以外的两条数据。测试结果passed
Blog{id='zHtj4GgBRi0EnhF9tlGJ', title='静夜思', summary='李白的诗', content='床前明月光,疑是地上霜。举头望明月,低头思故乡。'}
Blog{id='y3tj4GgBRi0EnhF9tlEE', title='相思', summary='王维的诗', content='红豆生南国,春来发几枝。愿君多采撷,此物最相思。'}
总结:
本文提供的es的安装是在Windows上安装,Linux和mac可能会有不同。至于springboot集成es,主要就是添加两个依赖,然后repository继承ElasticsearchRepository即可。ElasticsearchRepository接口封装了一些操作es的方法,我们直接调用就行,或者根据命名规则定义的方法,也不用自己实现,就类似于springData Jpa。
ElasticSearch的安装以及与springboot的集成相关推荐
- Elasticsearch的安装,以及Springboot整合Elasticsearch
*一.下载好elasticsearch并解压 我这里用的是elasticsearch-5.6.8,下面是下载地址 https://artifacts.elastic.co/downloads/elas ...
- Linux环境下ElasticSearch的安装与使用(SpringBoot整合云服务器上的ElasticSearch)
0. Elaticsearch 简介 Elaticsearch,简称为ES,ES是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展性很好,可以扩展到上百台服务器,处理 P ...
- 从ElasticSearch 认识到实战(SpringBoot集成ES)
ElasticSearch 认识到实战 目录 搜索引擎介绍 ElasticSearch知识 安装 使用restful风格查询ES SpringBoot配置ES SpringBoot集成使用 一.搜索引 ...
- elasticsearch数据存储结构,springboot集成elasticsearch
一.数据存储结构 结合数据库的结构理解起来就会比较清楚: 1)索引(Index)=>数据库(Database). 2)类型(Type)=>表(Table). 3)文档(Document)= ...
- SpringBoot高级-检索-Elasticsearch简介安装
SpringBoot与检索,主要介绍使用ElasticSearch,包括我们来整合SpringBoot来进行操作,我们说全文检索功能,是我们现在非常常见的一个需求,我们这个开源的ElasticSear ...
- elasticsearch集群搭建及springboot集成使用
elasticsearch集群搭建及springboot集成使用 1. ES介绍 2. 原理 2.1 核心概念 2.2 索引功能 2.3 ES特性 3. 分词器(analyzer) 4. 集群搭建 4 ...
- ElasticSearch(八):springboot集成ElasticSearch集群并使用
1. 集群的搭建 见:ElasticSearch(七) 2. springboot配置集群 2.1 创建springboot项目,使用idea创建,不过多介绍(创建项目时候建议不要勾选elastics ...
- Elasticsearch单机安装Version7.10.1
1.说明 Elasticsearch单机安装, 基于Elasticsearch的7.10.1版本, 在Linux上安装Elasticsearch单机, 使用安装包elasticsearch-7.10. ...
- springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
Datax安装及基本使用请查看上一篇文章: 文章目录 Datax概述 1.概述 2.功能清单 3.==说明==:本项目只支持mysql及hbase之间的数据同步 代码模块 配置文件 pom.xml D ...
最新文章
- 一致性hash算法虚拟节点_一致性哈希算法——虚拟节点
- CentOS7下Firewall 开放指定端口
- 《JAVA与模式》之模板模式(转载)
- 一个具有20位地址和32位字长的存储器_step7编程之地址概念详解
- RTSP鉴权认证之基础认证和摘要认证
- Python-闭包详解
- 为什么说Pravega是流处理统一批处理的最后一块拼图?
- 解决9341系列LCD,使用杜邦线等连接线,造成白屏问题
- 简洁好用的Geek Unіnstaller
- Unity iOS使用ASTC格式纹理实践
- Microsoft Sync Framework Runtime 简介(一篇非常好的MSF介绍文章)
- 支付宝支付后页面跳转
- 中国各地的特色茶,你知道几个?
- 用了三天终于安装成功 jsv8 centos7.6 + 宝塔+ php7.2 安装V8js
- iphone15尺寸大小 苹果15参数配置
- firefox调试html5程序,用 Firefox 开发者工具调试现代 Web 应用程序
- 计算机一级真题word,最新完整word版全国计算机等级考试一级操作题往年考试真题.docx...
- 网站开发-实用SQL语句大全
- c语言——潘多拉魔盒的钥匙
- l2行情数据api接口下载
热门文章
- STC15单片机C语言库函数版本UART_RXD_TXD_Short参数介绍
- java小游戏:五子棋人机大战
- python+itk+读取dicom数据,并保存为nii文件
- 小红年龄是小梅的5倍c语言,5.四年级奥数-年龄问题.doc
- 长知识啦——自己动手写分类模型
- 一文读懂什么是Python魔法函数
- sql 中or与in的查询效率对比
- 在MySQL中创建实现自增的序列(Sequence)的教程
- 利用端口,进程,文件,服务和日志信息来排查系统安全
- 2022湖南最新消防设施操作员模拟试题题库及答案