因为最近在项目中接触使用到了ElasticSearch,从本篇博客开始将给你们分享这款风靡全球的产品。将涉及到ElasticSearch的安装、基础概念、基本用法、高级查询、中文分词器、与SpringBoot集成进行接口开发等相关知识。elasticsearch
若是你们接触过大数据的话,相信你们或多或少的据说过ELK。ELK是目前很是主流的用于网站监控,流量监控,日志监控,集中日志管理的一套解决方案。而ElasticSearch如同ELK的心脏通常,起到一个很是核心的做用。简单来讲,Logstash经过把日志收集到ElasticSearch中,进行储存,kibana负责可视化的展示结果。分布式
ELKpost
说白了,ElasticSearch就是一款大数据搜索引擎,那么在市面上还有哪些相似的产品呢?在Java开源界的话,主要就是Lucene、Solr和ElasticSearch了。大数据
Lucene,Java领域的搜索引擎鼻祖,是一个比较底层的东西,须要深厚的搜索理论基础才能够掌握,比较复杂(它自己不是一个完整的解决方案,须要额外的开发工做)。所以,为了方便使用,屏蔽复杂性,Solr和ElasticSearch在lucene的基础上进行了二次开发。网站
Solr相比ElasticSearch而言拥有更加成熟的社区,比较稳定,可是随着数据量愈来愈大,对实时性要求愈来愈高,Solr的搜索效率在降低,而ElasticSearch却没有明显的变化。所以ElasticSearch很是适合实时搜索的应用。(好比大名鼎鼎的Github的站内实时搜索就在应用ES)搜索引擎
另外,因为ElasticSearch提供了简单易用的Restful API,轻松的横向扩展机制(说白了,能够经过加机器来扩展容量),能支持PB级别的结构化或非结构化数据处理,具备强大的分布式储存能力。3d
安装比较简单,下载地址是:日志
https://www.elastic.co/cn/downloads/elasticsearchcdn
下载后直接解压,运行便可。blog
运行es
默认启动端口9200
查看es启动状态
注意上面的方式是单实例的安装,那么分布式安装呢?
其实,对于分布式安装,无非注意下面几个配置要点:
指明谁是master,谁是slave,集群的名字,节点启动的端口(特别是在同一台机器上模拟分布式)。
索引,含有相同属性的文档集合。
类型,索引能够定义一个或者多个类型,文档必须属于一个类型。
文档,文档是能够被索引的基本数据单位。
看起来,比较绕,咱们用类比的思路来理解:
类比理解
索引至关于database,类型至关于table,文档至关于一条记录,文档Document是es里面最小的储存单位。须要注意的是索引在es中的名称必须是英文字母小写且不包含中划线。和索引相关的有2个高级概念,一个是分片,一个是备份。
分片:每一个索引都有多个分片,每一个分片是一个lucene索引。
备份:拷贝一个分片就完成了分片的备份。
假设索引的数据很大,就会形成硬盘的压力很大,同时搜索速度也会出现瓶颈。那么能够将索引分红多个分片,从而分摊压力。分片的同时,还能够容许用户进行水平扩展和拆分,进行分布式的储存,从而提升搜索的效率。
当一个主分片出现问题时,备份的分片能够代替工做,从而提升了es的可用性。
es在默认建立索引时,会建立5个分片,一个备份。
假设咱们的es是一个master,2个slave,建立索引时,走的默认配置(5个分片,1个备份),那么图示以下:
分片和备份
图中标绿颜色的是主分片,其余是备份的分片。
本文前面提到es提供了简单易用的Restful API来操做索引/类型/文档,下面介绍下基本格式:
API基本格式 http://ip:port/索引/类型/文档id
http经常使用方法 get/put/post/delete
下面,咱们演示一下利用postman来建立一个索引和类型:
建立索引和类型
查询索引、类型信息
好了,本篇博客就介绍到这里,下一篇博客再来给你们介绍文档的增删改查操做等。