对于全文检索,lucene是目前最流行的搜索库。以前我们都需要学习使用lucene,基于lucene做相关的开发,学习倒排索引的原理,而现在,我们可以直接使用现成的搜索框架了,因为现在很多这种搜索框架底层都是直接基于lucene的分布式搜索引擎,例如elasticsearch就是其中最典型的代表,我们亲切的简称其为es

现在分布式搜索基本已经成为大部分互联网行业的java体系的标配,其中尤为流行的就是es,记得我2014年的时候还在用用solr,估计那个时候大部分小伙伴也是一样。但是最近几年基本都开始转向es了。

elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。

elasticsearch通过在多台机器上启动多个进程实例,然后通相同的集群名称自动加入同一个集群组成了一个es集群。

es基础存储结构

es中存储数据的基本单位是索引index,比如我们可以创建订单索引order_index,然后创建一个type,所有的订单数据就都写到这个索引下的type里面去了,如果硬要和mysql进行类比的话,es中一个索引可以类比为mysql中的一个库,类型可以类比为mysql里的一张表,因此理论上一个索引index可以对应多个type。不过随着es版本的更新迭代,一般都是建议一个索引index只对应一个type。es中结构由大到小顺序大致为index -> type -> mapping -> document -> field。

比如:一个订单index里面一般就是一个订单type,只存放一种类型。

每个type都有一个mapping结构,mapping就是这个type的结构定义,这个结构定义就相当于你在mysql中创建一个表,要定义表结构和字段,以及类型。

而在es中mapping就代表了这个type的表结构定义,定义了这个type中每个字段名称,字段是什么类型的,然后还有这个字段的各种配置。

然后你向index中的type写的一条数据,就相当于一个document对象,一个document对象就代表了mysql中某个表里的一行记录,每个document有多个field,每个field就代表了这个document中的一个字段的值

es的分布式架构

借图说话

根据es的分布式架构,es的每个索引都会被拆分成多个shard分片,每个shard分片只存储部分数据。

然后每个shard分片都是有副本的,其中主分片即primary shard负责写入数据, primary shard写入数据之后,会将数据同步到其他几个副本分片replica shard上去。通过这种副本机制达到es的高可用。

es集群中是有多个节点的,它们会自动选举一个节点做为master节点,master节点相当于一个协调管理者,用于维护索引元数据,切换primary shard和replica shard身份之类的。

如果master节点宕机了,其余节点会重新选举一个节点为master节点。

如果是非master节点宕机了,那么会由master节点,让那个宕机节点上的primary shard的身份转移到其他机器上的replica shard。然后如果该宕机节点修复重启了之后,master节点会将缺失的replica shard分配过去,同步主从分片数据,让集群恢复正常。

这就是elasticsearch作为一个分布式搜索引擎最基本的一个架构设计,后续会持续探讨es搜索和写入的内部原理和流程,以及实际项目中我们怎么使用elasticsearch实现全文检索,聚合统计相关功能。

elasticsearch的分布式架构原理相关推荐

  1. Elasticsearch 分布式架构原理

    前言 前面介绍了很多ES使用过程中的具体实战知识点,本文主要是谈谈ES分布式架构原理. 一.Elasticsearch特点 elasticsearch是近实时的分布式搜索分析引擎,底层实现基于Luce ...

  2. ES 的分布式架构原理能说一下么?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://8rr.co/Gs9a 面试题 ...

  3. es 创建索引_从一道面试题来看ES的分布式架构原理

    概述 在搜索这块,lucene 是最流行的搜索库.几年前业内一般都问,你了解 lucene 吗?你知道倒排索引的原理吗?现在早已经 out 了,因为现在很多项目都是直接用基于 lucene 的分布式搜 ...

  4. 赠书5本包邮:数据思维实践、Cloud Native分布式架构原理与实践

    为了回馈我们默默关注的粉丝朋友们,数据和云(ID:OraNews)联合北京大学出版社为大家推出了此次活动,这次推荐两本书,<Cloud Native分布式架构原理与实践>.<数据思维 ...

  5. 连阿里P8都赞不绝口的“分布式架构原理设计笔记”到底有多牛

    在分布式系统中,一次业务处理可能需要多个应用来实现,比如用户发送一次下单请求,就涉及到订单系统创建订单,库存系统减库存,而对于一次下单,订单创建与减库存应该是要同时成功或者同时失效,但在分布式系统中, ...

  6. 分布式架构原理解析常见问题解决

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 分布式架构原理解析常见问题解决 1. 分 ...

  7. ElasticSearch集群架构原理

    一.  Elasticsearch架构原理 1.Elasticsearch的节点类型 在Elasticsearch主要分成两类节点,一类是Master(主节点),一类是DataNode(数据节点),还 ...

  8. 【Java架构师入门到精通】分布式架构原理解析

    1. 分布式术语 1.1. 异常 服务器宕机 内存错误.服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用. 服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上. ...

  9. 连你女朋友都能看懂的分布式架构原理!

    目录 从一个新闻门户网站案例引入 推算一下你需要分析多少条数据? 黄金搭档:分布式存储+分布式计算 这篇文章聊一个话题:什么是分布式计算系统? 一.从一个新闻门户网站案例引入 现在很多同学经常会看到一 ...

最新文章

  1. bash脚本之for语句if语句以及各种测试语句(2)
  2. 双花证明已实现,BCH安全的0确认交易还远吗?
  3. 专访William Kennedy:如何学习Go语言
  4. python中对文件、文件夹(文件操作函数)的操作
  5. java加载并运行虚拟机_《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?...
  6. struts2的select标签的用法
  7. Python合并两个有序列表
  8. 用计算机连接路由器,用路由器怎么连接两台电脑
  9. Redis数据库(一)——介绍、配置与优化
  10. Android 返回键的处理
  11. ROS保姆级0基础入门教程⭐ |第一章 ROS的概述与环境搭建(4万字教程,建议收藏)
  12. matlab将多个nc文件进行合成TIF
  13. app自动化之移动端测试基础知识
  14. java数字代码_Java基础08—数字类处理(示例代码)
  15. win10分辨率设置_win10分辨率设置方法教程
  16. Vivado IP核之定点数转为浮点数Floating-point
  17. python 爬取视频真实地址_python 爬取视频
  18. matlab 如何统计矩阵中大于、小于或等于某一值的位置、个数
  19. JavaScript BOM和DOM部分
  20. BGP Dampening Cyrus

热门文章

  1. 七边形简单画法步骤图_眼线笔的画法步骤图
  2. linux7.0ftp,Linux(Centos7)搭建FTP服务
  3. mysql分页案例_MySQL优化案例系列-mysql分页优化
  4. golang语言学第四课:循环
  5. 转载,关于缓存穿透、缓存并发、缓存雪崩那些事
  6. AR-关于应收票据的系统操作说明
  7. MusicXML 3.0 (4) - 谱号
  8. Ural_1353. Milliard Vasya's Function(DP)
  9. kvm连接服务器显示不全有重影,KVM延长器系列常见问题及解决方法
  10. 使用 UML 进行业务建模:理解业务用例与系统用例的相似和不同之处