后台开发者应该需要了解哪些ElasticSearch的知识?
ElasticSearch
Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单。他的功能模块还有:
- 全文检索
- 分布式文件存储,将每个字段都作为索引,可以被搜索
- 可以结合Kinaba做日志分析
- 可以扩展,处理量级大的数据
一、使用场景
列举一个正常的电商场景的数据存储层面的解决方案,可以看到Elasticsearch主要适用于做搜索,如果数据量级很大,每次都要去Mysql查询会造成大量的io,这个时候就可以使用Elasticsearch的倒排索引的机制,存在ES中的数据,ES会为这些数据创建倒排索引,加快查询效率。减少数据库压力
二、基本概念
cluster:代表一个集群,由n多个node集合
node:节点
index:索引 多个节点中的shard组成一个index
shard:分片 一个集群里的index(索引)会存储在每个node中的shard中
segement:最终存储单元
三、倒排索引
假设在有如下三条数据
id | name | age |
---|---|---|
1 | w | 11 |
2 | a | 11 |
3 | z | 33 |
在ES中索引则会是
name的索引
term | Posting List(一般是文档的id) |
---|---|
w | 1 |
a | 2 |
z | 3 |
age的索引
term | Posting List (一般是文档的id) |
---|---|
11 | 1,2 |
33 | 3 |
所谓的Posting List 就被成为倒排索引