ES启航:ElasticSearch简介

418 阅读5分钟

ES简介

我正在参加「掘金·启航计划」

ES官网说

解决各种用例,超快无比

简单来说:ElasticSearch是一款基于JSON的分布式搜索引擎。


ES官网的速度介绍

ES官网速度介绍

一、特点

  • 可扩展性

    可以在一台笔记本电脑上运行、也可以在承载了 PB 级别数据的 千、万台服务器上构建分布式ES集群!

    它能够水平扩展,每秒钟可处理海量事件,同时能够自动管理索引和查询在集群中的分布方式,以实现极其流畅的操作。

  • 相关度

    基于各项元素(从词频或新近度到热门度等)对搜索结果进行排序。将这些内容与功能进行混搭,以优化向用户显示结果的方式。

    而且,由于我们的大部分用户都是真实的人,Elasticsearch 具备齐全功能,可以处理包括各种复杂情况(例如拼写错误)在内的人为错误。

  • 弹性

    通过跨集群复制功能,辅助集群可以作为热备份随时投入使用。Elasticsearch 运行在一个分布式的环境中,从设计之初就考虑到了这一点,目的只有一个,让您永远高枕无忧。

二、ES到底能干什么?

数字、文本、地理位置、结构化数据、非结构化数据。适用于所有数据类型。全文本搜索只是全球众多公司利用 Elasticsearch 解决各种挑战的冰山一角。是它的目的是通过简单的RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单 等等等...

三、谁在使用?

维基百科:(类似于百度知道), 全文检索、高亮、搜索推荐...

Github:使用ES检索 上千亿行代码库

电商网站:检索商品

等等等....

四、ES的底层

ElasticSearch 是基于 Lucene 做了一些封装和增强(我们上手是十分简单!)

五、ES和Solr的区别

  • Solr适用于单体式项目

  • ElasticSearch适用于大型分布式微服务项目

  • 架构不同!

六、Elasticsearch和Solr比较

sd1

sd

sd

zj

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的关系

配 表格

ESMySQL
索引 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地址作用
PUThttp://localhost:9200/索引名称/类型/文档id/创建文档(指定文档id)
POSThttp://localhost:9200/索引名称/类型/创建文档(随机文档id) es会随机分配id
POSThttp://localhost:9200/索引名称/类型/文档id/_update修改文档
DELETEhttp://localhost:9200/索引名称/类型/文档id删除文档
GEThttp://localhost:9200/索引名称/类型/文档id通过文档id查询文档
POSThttp://localhost:9200/索引名称/类型/_search查询所有数据