ES简介
我正在参加「掘金·启航计划」
ES官网说
解决各种用例,超快无比
简单来说:ElasticSearch是一款基于JSON的分布式搜索引擎。
ES官网的速度介绍
一、特点
-
可扩展性
可以在一台笔记本电脑上运行、也可以在承载了 PB 级别数据的 千、万台服务器上构建分布式ES集群!
它能够水平扩展,每秒钟可处理海量事件,同时能够自动管理索引和查询在集群中的分布方式,以实现极其流畅的操作。
-
相关度
基于各项元素(从词频或新近度到热门度等)对搜索结果进行排序。将这些内容与功能进行混搭,以优化向用户显示结果的方式。
而且,由于我们的大部分用户都是真实的人,Elasticsearch 具备齐全功能,可以处理包括各种复杂情况(例如拼写错误)在内的人为错误。
-
弹性
通过跨集群复制功能,辅助集群可以作为热备份随时投入使用。Elasticsearch 运行在一个分布式的环境中,从设计之初就考虑到了这一点,目的只有一个,让您永远高枕无忧。
二、ES到底能干什么?
数字、文本、地理位置、结构化数据、非结构化数据。适用于所有数据类型。全文本搜索只是全球众多公司利用 Elasticsearch 解决各种挑战的冰山一角。是它的目的是通过简单的RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单 等等等...
三、谁在使用?
维基百科:(类似于百度知道), 全文检索、高亮、搜索推荐...
Github:使用ES检索 上千亿行代码库
电商网站:检索商品
等等等....
四、ES的底层
ElasticSearch 是基于 Lucene 做了一些封装和增强(我们上手是十分简单!)
五、ES和Solr的区别
-
Solr适用于单体式项目
-
ElasticSearch适用于大型分布式微服务项目
-
架构不同!
六、Elasticsearch和Solr比较
ElasticSearch vs Solr总结
1、es基本是开箱即用(解压就可以用 ! ),非常简单。Solr安装略微复杂一丢丢!
2、Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
3、Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
4、Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提
供,例如图形化界面需要kibana友好支撑~!
5、Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;
ES建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索。
Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
6、Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而 Elasticsearch相对开发维护者
较少,更新太快,学习使用成本较高。(趋势!)
七、ES和MySQL的关系
配 表格
ES | MySQL |
---|---|
索引 index | 数据库 db |
类型 type 在 ES8.0中将会废弃 | 表 table |
文档 document | 一行数据 row |
字段 filed | 列 column |
反向索引 | 索引 |
GET http:// xxx/索引/... | select * from xxx |
PUT http:// xxx/索引/... | update xxx set xxx |
DELETE http:// xxx/索引/... | delete from xxx |
八、倒排索引
elasticsearch使用的是一种称为倒排索引的结构,采用Lucene倒排索作为底层。这种结构适用于快速的
全文搜索, 一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含它的文档列表。
比如我们通过博客标签来搜索博客文章。那么倒排索引列表就是这样的一个结构 :
如果要搜索含有python 标签的文章,那相对于查找所有原始数据而言,查找倒排索引后的数据将会快
的多。只需要 查看标签这一栏,然后获取相关的文章ID即可。完全过滤掉无关的所有数据,提高效率!
elasticsearch的索引和Lucene的索引对比
在elasticsearch中, 索引 (库)这个词被频繁使用,这就是术语的使用。 在elasticsearch中,索引被
分为多个分片,每份 分片是一个Lucene的索引。所以一个elasticsearch索引是由多个Lucene索引组成的。
别问为什么,谁让elasticsearch使用Lucene作为底层呢! 如无特指,说起索引都是指elasticsearch
的索引。
接下来的一切操作都在kibana中Dev Tools下的Console里完成。基础操作!
九、Rest风格说明
一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交
互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
下边为一些基本的Rest命令说明:
请求方式 | url地址 | 作用 |
---|---|---|
PUT | http://localhost:9200/索引名称/类型/文档id/ | 创建文档(指定文档id) |
POST | http://localhost:9200/索引名称/类型/ | 创建文档(随机文档id) es会随机分配id |
POST | http://localhost:9200/索引名称/类型/文档id/_update | 修改文档 |
DELETE | http://localhost:9200/索引名称/类型/文档id | 删除文档 |
GET | http://localhost:9200/索引名称/类型/文档id | 通过文档id查询文档 |
POST | http://localhost:9200/索引名称/类型/_search | 查询所有数据 |