目录
一、ElaticSearch介绍
1.1 概述
1.2 搜索引擎是什么?
所谓搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术。例如我们在淘宝进行购物时,当我们输入关键字“衣服”,那么淘宝就会给我们返回各种类型的衣服(男装/女装),实现这个功能的背后就是搜索引擎的功劳。
1.3 全文检索是什么?
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
全文检索的方式主要有两种:
二、ES特点
三、ES概念
3.1 基本概念
RDBS | ES |
数据库(database) | 索引(index) |
表(table) | 类型(type)(ES6.0之后被废弃,es7中完全删除) |
表结构(schema) | 映射(mapping) |
行(row) | 文档(document) |
列(column) | 字段(field) |
索引 | 反向索引 |
SQL | 查询DSL |
SELECT * FROM table | GET http://..... |
UPDATE table SET | PUT http://...... |
DELETE | DELETE http://...... |
3.1.1 索引(index)
3.1.2 类型(type)
3.1.3 文档(document)
由于ElasticSearch是面向文档的,那么就意味着索引和搜索数据的最小单位是文档, ES中,文档有几个重要属性:
3.1.4 映射(mapping)
3.1.5 倒排索引
倒排索引操作步骤:
这样在用户检索关键字时, 可以先查找关键字索引,在通过关键字与文档的对应关系查找到所在的文档。
如下面的两个文档:
文档1: I love elasticsearch
文档2: I love logstash
他们对应的倒排索引为:
序号 | 关键字 | 文档1 | 文档2 |
1 | I | √ | √ |
2 | love | √ | √ |
3 | elasticsearch | √ | |
4 | logstash | √ |
现在,我们试图搜索 love elasticsearch,只需要查看包含每个词条的文档
关键字 | 文档1 | 文档2 |
---|---|---|
love | √ | √ |
elasticsearch | √ | x |
total | 2 | 1 |
两个文档都匹配,但是第一个文档比第二个匹配程度更高。如果没有别的条件,现在,这两个包含关键字的文档都将返回。
3.2 ES集群核心概念
3.2.1 集群(cluster)
3.2.2 节点(node)
ES的配置文件中可以通过node.master、 node.data 来设置节点类型:
node节点的组合方式:
3.2.3 分片(shard)
概述:
特点:
(1)ES的一个索引可以包含多个分片(shard);
(2)每一个分片(shard)都是一个最小的工作单元,承载部分数据;
(3)每个shard都是一个lucene实例,有完整的简历索引和处理请求的能力;
(4)增减节点时,shard会自动在nodes中负载均衡;
(5)一个文档只能完整的存放在一个shard上
(6)分片的数量只能在索引创建前指定,并且索引创建后不能更改。如一个索引中含有shard的数量,默认值为5,在索引创建后这个值是不能被更改的。
(7)每一个shard关联的副本分片(replica shard)的数量,默认值为1,这个设置在任何时候都可以修改。
优点:
3.2.4 副本(replica)
代表索引副本,ES可以设置多个索引的副本,副本的作用如下:
(1)提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。
(2)提高ES的查询效率,ES会自动对搜索请求进行负载均衡。
四、应用场景
🌴 场景一:搜索服务
🌵 典型场景
🔥 主要特性
🚀 相关公司
腾讯健康码、腾讯文档全文检索、携程、拼多多、蘑菇街、滴滴、今日头条、贝壳找房…….
🌴 场景二:日志实时分析
🌵 典型场景
🔥 主要特性
🚀 相关公司
日志易
🌴 场景三:商业智能BI
🌵 典型场景
🔥 主要特性
🚀 相关公司
睿思BI
小结
以上就是【一心同学】对【ElaticSearch】的介绍,也带大家去理解了ES中的各种【基本概念】和ES在我们生活中的【应用场景】,相信大家现在对ES已经不再陌生了,而在接下来的博客中,【一心同学】将会向为大家继续讲解【ES的操作】。