后台开发者应该需要了解哪些ElasticSearch的知识?

ElasticSearch

Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单。他的功能模块还有:

  1. 全文检索
  2. 分布式文件存储,将每个字段都作为索引,可以被搜索
  3. 可以结合Kinaba做日志分析
  4. 可以扩展,处理量级大的数据

一、使用场景

列举一个正常的电商场景的数据存储层面的解决方案,可以看到Elasticsearch主要适用于做搜索,如果数据量级很大,每次都要去Mysql查询会造成大量的io,这个时候就可以使用Elasticsearch的倒排索引的机制,存在ES中的数据,ES会为这些数据创建倒排索引,加快查询效率。减少数据库压力
后台开发者应该需要了解哪些ElasticSearch的知识?_第1张图片

二、基本概念

cluster:代表一个集群,由n多个node集合
node:节点
index:索引 多个节点中的shard组成一个index
shard:分片 一个集群里的index(索引)会存储在每个node中的shard中
segement:最终存储单元

后台开发者应该需要了解哪些ElasticSearch的知识?_第2张图片

三、倒排索引

假设在有如下三条数据

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 就被成为倒排索引

四、查询流程

后台开发者应该需要了解哪些ElasticSearch的知识?_第3张图片

你可能感兴趣的:(ElasticSearch,基础)