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的集成相关推荐

  1. Elasticsearch的安装,以及Springboot整合Elasticsearch

    *一.下载好elasticsearch并解压 我这里用的是elasticsearch-5.6.8,下面是下载地址 https://artifacts.elastic.co/downloads/elas ...

  2. Linux环境下ElasticSearch的安装与使用(SpringBoot整合云服务器上的ElasticSearch)

    0. Elaticsearch 简介 Elaticsearch,简称为ES,ES是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展性很好,可以扩展到上百台服务器,处理 P ...

  3. 从ElasticSearch 认识到实战(SpringBoot集成ES)

    ElasticSearch 认识到实战 目录 搜索引擎介绍 ElasticSearch知识 安装 使用restful风格查询ES SpringBoot配置ES SpringBoot集成使用 一.搜索引 ...

  4. elasticsearch数据存储结构,springboot集成elasticsearch

    一.数据存储结构 结合数据库的结构理解起来就会比较清楚: 1)索引(Index)=>数据库(Database). 2)类型(Type)=>表(Table). 3)文档(Document)= ...

  5. SpringBoot高级-检索-Elasticsearch简介安装

    SpringBoot与检索,主要介绍使用ElasticSearch,包括我们来整合SpringBoot来进行操作,我们说全文检索功能,是我们现在非常常见的一个需求,我们这个开源的ElasticSear ...

  6. elasticsearch集群搭建及springboot集成使用

    elasticsearch集群搭建及springboot集成使用 1. ES介绍 2. 原理 2.1 核心概念 2.2 索引功能 2.3 ES特性 3. 分词器(analyzer) 4. 集群搭建 4 ...

  7. ElasticSearch(八):springboot集成ElasticSearch集群并使用

    1. 集群的搭建 见:ElasticSearch(七) 2. springboot配置集群 2.1 创建springboot项目,使用idea创建,不过多介绍(创建项目时候建议不要勾选elastics ...

  8. Elasticsearch单机安装Version7.10.1

    1.说明 Elasticsearch单机安装, 基于Elasticsearch的7.10.1版本, 在Linux上安装Elasticsearch单机, 使用安装包elasticsearch-7.10. ...

  9. springboot项目集成dolphinscheduler调度器 实现datax数据同步任务

    Datax安装及基本使用请查看上一篇文章: 文章目录 Datax概述 1.概述 2.功能清单 3.==说明==:本项目只支持mysql及hbase之间的数据同步 代码模块 配置文件 pom.xml D ...

最新文章

  1. 一致性hash算法虚拟节点_一致性哈希算法——虚拟节点
  2. CentOS7下Firewall 开放指定端口
  3. 《JAVA与模式》之模板模式(转载)
  4. 一个具有20位地址和32位字长的存储器_step7编程之地址概念详解
  5. RTSP鉴权认证之基础认证和摘要认证
  6. Python-闭包详解
  7. 为什么说Pravega是流处理统一批处理的最后一块拼图?
  8. 解决9341系列LCD,使用杜邦线等连接线,造成白屏问题
  9. 简洁好用的Geek Unіnstaller
  10. Unity iOS使用ASTC格式纹理实践
  11. Microsoft Sync Framework Runtime 简介(一篇非常好的MSF介绍文章)
  12. 支付宝支付后页面跳转
  13. 中国各地的特色茶,你知道几个?
  14. 用了三天终于安装成功 jsv8 centos7.6 + 宝塔+ php7.2 安装V8js
  15. iphone15尺寸大小 苹果15参数配置
  16. firefox调试html5程序,用 Firefox 开发者工具调试现代 Web 应用程序
  17. 计算机一级真题word,最新完整word版全国计算机等级考试一级操作题往年考试真题.docx...
  18. 网站开发-实用SQL语句大全
  19. c语言——潘多拉魔盒的钥匙
  20. l2行情数据api接口下载

热门文章

  1. STC15单片机C语言库函数版本UART_RXD_TXD_Short参数介绍
  2. java小游戏:五子棋人机大战
  3. python+itk+读取dicom数据,并保存为nii文件
  4. 小红年龄是小梅的5倍c语言,5.四年级奥数-年龄问题.doc
  5. 长知识啦——自己动手写分类模型
  6. 一文读懂什么是Python魔法函数
  7. sql 中or与in的查询效率对比
  8. 在MySQL中创建实现自增的序列(Sequence)的教程
  9. 利用端口,进程,文件,服务和日志信息来排查系统安全
  10. 2022湖南最新消防设施操作员模拟试题题库及答案