Elasticsearch之原理详解

计算机软件开发 2024-9-8 19:56:05 97 0 来自 中国
1 Elasticsearch

1.1 简介

ES是使用 Java 编写的一种开源搜索引擎,它在内部使用 Lucene 做索引与搜索,通过对 Lucene 的封装,隐蔽了 Lucene 的复杂性,取而代之的提供一套简单同等的 RESTful API
然而,Elasticsearch 不但仅是 Lucene,而且也不但仅只是一个全文搜索引擎。
它可以被下面如许准确的形容:

  • 一个分布式的实时文档存储,每个字段可以被索引与搜索。
  • 一个分布式实时分析搜索引擎。
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化大概非结构化数据。
官网对 Elasticsearch 的介绍是 Elasticsearch 是一个分布式、可扩展、近实时的搜索与数据分析引擎。
此中紧张有如下几个焦点术语须要明白:

  • 词条(Term): 索引内里最小的存储和查询单元,对于英文来说是一个单词,对于中文来说一样寻常指分词后的一个词。
  • 辞书(Term Dictionary): 或字典,是词条 Term 的聚集。搜索引擎的通常索引单元是单词,单词辞书是由文档聚会合出现过的全部单词构成的字符串聚集,单词辞书内每条索引项记载单词本身的一些信息以及指向倒分列表的指针。
  • 倒排表(Post list):一个文档通常由多个词构成,倒排表记载的是某个词在哪些文档里出现过以及出现的位置。每条记载称为一个倒排项(Posting)。倒排表记载的不但是文档编号,还存储了词频等信息。
  • 倒排文件(Inverted File): 全部单词的倒分列表通常次序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件
    由属性值来确定记载的位置的结构就是倒排索引。带有倒排索引的文件称为倒排文件
辞书和倒排表是 Lucene 中很紧张的两种数据结构,是实现快速检索的紧张基石。辞书和倒排文件是分两部门存储的,辞书在内存中而倒排文件存储在磁盘上
1.2 分片,副本,映射

1.2.1 分片(Shards)

ES 支持 PB 级全文搜索,当索引上的数据量太大的时间,ES 通过水平拆分的方式将一个索引上的数据拆分出来分配到差别的数据块上,拆分出来的数据库块称之为一个分片。
这类似于 MySQL 的分库分表,只不外 MySQL 分库分表须要借助第三方组件而 ES 内部自身实现了此功能。
在一个多分片的索引中写入数据时,通过路由来确定具体写入哪一个分片中,以是在创建索引的时间须要指定分片的数量,而且分片的数量一旦确定就不能修改。
分片的数量和下面介绍的副本数量都是可以通过创建索引时的 Settings 来设置,ES 默以为一个索引创建 5 个主分片, 并分别为每个分片创建一个副本。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-19 04:32, Processed in 0.159455 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表