一、什么是ElasticSearch
ElasticSearch是一个基于Lucene的高扩展的分布式搜索服务器,支持开箱即用。ElasticSearch隐藏了Lucene的复杂性,对外提供Restful 接口来操作索引、搜索。核心思想就是在多台机器上启动多个 es 进程实例,组成了一个 es 集群。
优点:扩展性好,可部署上百台服务器集群。近实时地去索引数据,搜索数据。
二、ES快速入门
ES在项目中的应用方式:用户在前端搜索关键字,项目前端通过HTTP方式请求项目服务端,项目服务端通过Http RESTful方式请求ES集群进行搜索,ES集群从索引库检索数据。
步骤一:创建索引库(可使用postman或head插件创建,本案例使用postman)
【相关概念】
ES的索引库是一个逻辑概念,它包括了分词列表及文档列表,同一个索引库中存储了相同类型的文档。它就相当于MySQL中的表,或相当于Mongodb中的集合。
关于索引这个语:
索引(名词):ES是基于Lucene构建的一个搜索服务,它要从索引库搜索符合条件索引数据。
索引(动词):索引库刚创建起来是空的,将数据添加到索引库的过程称为索引。
【操作】put http://localhost:9200/索引库名称
{
"settings":{
"index":{
"number_of_shards":1, //分片数,即将索引库分成多片存储在不同节点,提高可用性
"number_of_replicas":0 //副本数量,提高可靠性
}
}
}
步骤二:创建映射
【相关概念】
在索引中每个文档都包括了一个或多个field,创建映射就是向索引库中创建field的过程,下边是document和field与关系数据库的概念的类比:
文档(Document)----------------Row记录
字段(Field)-------------------Columns 列
注意:6.0之前的版本有type(类型)概念,type相当于关系数据库的表,ES官方将在ES9.0版本中彻底删除type。
上边讲的创建索引库相当于关系数据库中的数据库还是表?
1、如果相当于数据库就表示一个索引库可以创建很多不同类型的文档,这在ES中也是允许的。
2、如果相当于表就表示一个索引库只能存储相同类型的文档,ES官方建议 在一个索引库中只存储相同类型的文档
【操作】发送 post 请求:http://localhost:9200/xc_course/doc/_mapping
{
"properties": {
"name": {
"type": "text" //由于ES6.0版本还没有将type彻底删除,所以暂时把type起一个没有特殊意义的名字。
},
"description": {
"type": "text"
},
"studymodel": {
"type": "keyword"
}
}
}
步骤三:创建文档——相当于MySQL数据库表中的记录
【操作】发送:put 或Post http://localhost:9200/xc_course/doc/id值 (http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000)
{
"name":"Bootstrap开发框架",
"description":"Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。此开发框架包 含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的 精美界面效果。",
"studymodel":"201001"
}
步骤四:搜索文档
【操作】
单一查找:发送:get http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000
查找所有:get http://localhost:9200/xc_course/doc/_search
对应查找:get http://localhost:9200/xc_course/doc/_search?q=name:bootstrap
get http://localhost:9200/xc_course/doc/_search?q=studymodel:201001
三、集群管理
1、结点:ES集群由多个服务器组成,每个服务器即为一个Node结点(该服务只部署了一个ES进程)。
2、分片:当我们的文档量很大时,由于内存和硬盘的限制,同时也为了提高ES的处理能力、容错能力及高可用能力,我们将索引分成若干分片,每个分片可以放在不同的服务器,这样就实现了多个服务器共同对外提供索引及搜索服务。一个搜索请求过来,会分别从各各分片去查询,最后将查询到的数据合并返回给用户。
3、副本:为了提高ES的高可用同时也为了提高搜索的吞吐量,我们将分片复制一份或多份存储在其它的服务器,这样即使当前的服务器挂掉了,拥有副本的服务器照常可以提供服务。
4、主结点:一个集群中会有一个或多个主结点,主结点的作用是集群管理,比如增加节点,移除节点等,主结点挂掉后ES会重新选一个主结点。
5、结点转发:每个结点都知道其它结点的信息,我们可以对任意一个结点发起请求,接收请求的结点会转发给其它结点查询数据。
ES简单介绍
原文:https://www.cnblogs.com/qmillet/p/12563061.html