ElasticSearch

ElasticSearch,第1张

ElasticSearch

ES
  • 索引、文档
  • 节点、集群、分片、副本
  • 倒排索引

索引、文档

文档 document
ES是面向文档,文档是可搜索的最小单元
文档会被序列化成 JSON 格式,保存在 es 中
每个文档有一个 unique id

JSON 文档
一篇文档包含一系列字段,类似数据库一条记录。
JSON 文档格式灵活,不需预先定义格式
支持数组/嵌套

文档的元数据,用于标注文档的相关信息
_index:文档所属的索引名
_type:文档所属的类型名
_id:文档的唯一 id
_source:文档的原始 json 数据
_version:文档的版本信息
_score:相关性打分

INDEX 索引:文档的容器,是一类文档的集合
每个 index 都有一个 MAPPING,用于定义包含的字段名和字段类型
Shard 体现了物理空间的概念,索引中的数据分散在 shard 上
Setting 定义不同的数据分布
“索引”作动词:将文档保存在 es 中(indexing)

7.0 开始,一个索引只能创建一个 _type = “_doc”

传统 RDBMS 类比 es

RDBMSESTableIndex(type)RowdocumentColumnFiledSchemaMappingSQLDSL

ES-相关性-高性能全文检索
RDBMS-事务

节点集群、分片、副本

分布式系统的可用性和扩展性

  • 高可用性:
    服务可用性:允许有节点停止服务
    数据可用性:部分节点丢失,不会丢失数据
  • 可扩展性:
    请求量提升/数据不断增长(将数据分布在所有节点上)

每个节点是一个 es 实例(实质是 java 进程),每个节点都有名字,每个节点会被分配一个 uid。

master node
节点启动后默认为 master-eligible node,m-e node 可以参加选举,成为 master 节点。
集群的每个节点都保存了集群的状态,只有 master 节点能修改集群的状态信息。

  • 集群状态(cluster state),维护了一个集群的必要信息
    所有节点的信息
    所有的索引和索引的 mapping、setting 等信息
    分片的路由信息
  • 任何节点都能修改信息,导致集群的数据不一致

节点的角色:

data node
可以保存数据的节点。负责保存分片数据。在数据扩展上起到了至关重要的作用。

coordinating node
负责接收 client 的请求,将请求分发到合适的 node,最终把结果汇集到一起.
。。。每个节点默认都是 coordinating node

hot & warm node
不同硬件配置的 data node,用来实现 hot & warm 架构,降低集群部署的成本

machine learning node
负责跑机器学习的 job,用来做异常检测

tribe node
一个 tribe node 连接若干个 es 集群,并且支持将这些集群当作一个集群来处理。

开发环境中一个 node 可以承担多种角色。
生产环境中,应该设置单一的角色的 node。

分片(primary shard & replica shard)
主切片:用于解决数据水平扩展的问题。通过主分片,可以将数据分布到集群内的所有节点上
副本:主分片的拷贝。副本越多,可以一定程度上提高读取的吞吐

集群的健康状态:主分片与副本是否正常分配

倒排索引
  • 正排索引:
    图书的目录:按页数的升序排序
    搜索引擎:文档 ID ->文档内容(单词)

  • 倒排索引:
    图书的目录:按内容标题的字典序升序排序
    搜索引擎:文档内容(单词前缀)->文档 ID


倒排索引的核心组成

  • 单词词典(Term Dictionary),记录所有文档的单词的单词->倒排列表的映射关系。
  • 倒排列表(Posting List),倒排索引项的列表
    倒排索引项(Posting):
    • 文档 id
    • 词频:该单词在该文档中的出现次数,用于相关性评分。
    • 位置(Position):单词在文档中分词的位置。用于语句搜索(phrase query)
    • 偏移(Offset):记录单词的开始结束位置,实现高亮显示

以下是“Elasticsearch”这个单词的倒排列表

ES 中的 JSON 文档中的每个字段都有倒排索引

ES 提供了丰富的 restful api,可以通过 http 的形式访问 es。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4010004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存