当前位置: 首页 > article >正文

Elasticsearch核心概念

Elasticsearch

Elasticsearch核心概念

Elasticsearch的主旨:随时可用和按需扩容

Elasticsearch 可以获益于更强大的硬件设备,但垂直扩容是有极限的。 真正的扩容能力是来自于水平扩容—​为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中。ElastiSearch是分布式的 ,它知道如何通过管理多节点来提高扩容性和可用性。

Elasticsearch和Solr的比较

  • 单纯对已有数据进行搜索,Solr更快【查询快,更新索引慢即插入删除慢,用于电商等查询多的应用】
  • 当要建立实时索引时,Solr会产生io阻塞,查询性能较差,Elasticsearch更优【建立索引快即实时性查询快】
  • 随着数据量增加,Solr效率变低,Elasticsearch没有明显变化
  • Solr利用Zookeeper进行分布式管理,es自带分布式协调管理功能
  • Solr支持更多数据格式,es仅支持json文件格式

物理设计

在后台吧每个索引划分成多个分片,每个分片可以在集群中的不同服务器间迁移
一个人就是一个集群【默认:elasticsearch】
一个集群至少有一个节点,一个节点就是一个es进程,如果创建索引,那么索引将会有五个分片构成,每一个主分片会有一个副本【复制分片】
一个分片是一个Lucene索引,一个包含倒排索引的文件目录
主分片和对应的复制分片都不会在同一个节点内,若某个节点挂了,数据也不至于丢失

逻辑设计

文档:面向文档的,索引和搜索数据的最小单位时文档,即一条条数据
类型:文档的逻辑容器
索引:就是数据库,是映射类型的容器,es的索引是一个非常大的文档集合,存储了映射类型的字段和其他设置,然后被存储到各个分片
Elasticsearch是面向文档型数据库,一条数据即一个文档,可将Elasticsearch与存储文档数据的关系型数据库Mysql存储数据的概念进行一个类比:ES的index可看作一个库;Types相当于表;Documents相当于表的行;Fields即表的列

Index -----> Databases
Types -----> Table
Documents ----->Row
Fields -----> Column
Types概念被逐渐弱化

倒排索引:

搜索引擎会把正向索引变为反向索引(倒排索引)即把“文档ID→关键词”的形式变为“关键词→文档ID”的形式。只需要查看标签这一栏,然后获取相关的文章ID即可,完全过滤掉无关的所有数据,效率upup⬆️
key:文档1、文档2…
word:文档2、文档5…

数据结构:

倒排表【posting list】:int有序数组存储匹配某个term的所有id
词项字典term dictionary:存放拆分出来的所有词项
词项索引term index【在词项字典的基础上创建出来的索引数据,大大提升检索速度】
tip-词典索引,存放前后缀指针,需要内存加载;tim-后缀词块、倒排指针;doc-倒排表、词频
极大得节省内存,FST压缩倍率最高可以达到20倍,性能不如HashMap但也很不错

正排索引:

当用户发起查询时(假设查询为一个关键词),搜索引擎会扫描索引库中的所有文档,找出所有包含关键词的文档,这样依次从文档中去查找是否含有关键词的方法叫做正向索引。【遍历的索引结构效率低下,无法满足用户需求】
文档1:key、word…
文档2:word、load…


http://www.kler.cn/a/381255.html

相关文章:

  • YARN WebUI 服务
  • 【linux系统之redis6】redisTemplate的使用方法
  • 【Logstash03】企业级日志分析系统ELK之Logstash 过滤 Filter 插件
  • 用户界面的UML建模11
  • (二十八)Flask之wtforms库【上手使用篇】
  • Numpy数组的属性
  • [渲染层网络层错误] net::ERR_CONTENT_LENGTH_MISMATCH 问题解决
  • 【TextIn:开源免费的AI智能文字识别产品(通用文档智能解析识别、OCR识别、文档格式转换、篡改检测、证件识别等)】
  • 利用爬虫爬取网站信息
  • spring-data-aop Repository层的增删查改
  • 基于C#的Windows编程:后台窗口和坐标转换
  • 网络原理(应用层)->HTTPS解
  • odrive代码阅读笔记
  • 图说复变函数论重大错误:将无穷多各异平面误为同一面
  • Python常用脚本集锦
  • Linux下复制粘贴快捷键
  • neo4j浅析
  • [Linux] 进程控制之创建和终止
  • 【SQL50】day 1
  • Linux——Linux基础指令
  • 在 Spring Boot 中使用分布式事务时,如何处理不同数据源之间的事务一致性问题?
  • Java实战项目-基于SpringBoot的新能源汽车个性化推荐系统
  • Linux 经典面试八股文
  • ICT网络赛道WLAN考点知识总结1
  • 多模态大模型微调实践!PAI+LLaMA Factory搭建AI导游
  • 无人机的就业前景怎么样?