Elasticsearch框架基础概念

Elasticsearch(ES)是一个基于Lucene构建开源分布式搜索引擎并提供Restful接口。

Es是一个分布式文档数据库(JSON数据格式存储,类似MongoDB),JSON中的每个字段数据都可作为搜索条件,并且能够扩展至数以百计的服务器存储以及处理PB(PetaByte)级的数据。可在短时间内存储、搜索和分析大量的数据。

PB级级别: 拍字节(Petabytes),计算机存储容量单位,也常用PB来表示。1PB=1024TB==2^50字节。

Es优势:

横向可扩展性

只需增加服务器,修改配置后启动Es就可并入集群

分片机制提供更好的分布性

同一个索引分成多个分片(sharding),这点类似于HDFS的块机智,分别治理可提升处理效率

高可用

提供复制(replica)机制,一个分片可以设置多个复制,使得某台服务器在宏碁的情况下,集群仍旧可以照常运行,并会把服务器宏碁丢失的数据信息复制恢复到其他可用节点上

Elasticsearch应用场景:

大型分布式日志分析系统ELK(elasticsearch(存储日志)+ logstash(收集日志)+ kibana(展示数据))。

Es存储结构:

Es是文件存储,面向文档型数据库,类似于MongoDB,用JSON作为文档序列化的格式

Es与数据库区别:

关系数据库 => 数据库(Database) => 表(Table) => 行(Row) => 列(columns) Elasticsearch=> 索引(index) => 类型(Type) => 文档 (Documents) => 字段(Fields)

#注意:从ES 7.0.0开始,移除Type(类型)这个概念,Type 字段那里变为固定值 _doc Elasticsearch=> 索引(index) => _doc => 文档 (Documents) => 字段(Fields)

Es版本控制:

1.为什么要进行版本控制
    为了保证数据在多线程操作下的准确性
2.内部版本控制和外部版本控制
    内部版本控制: _version自增长,修改数据后,_version会自动+1
    外部版本控制:为了保持_version与外部版本控制的数值一致,使用version_type=external检查数据当前的version值是否小于请求中的version值

3.悲观锁和乐观锁

悲观锁:每次获取据时都会上锁,会造成线程阻塞
         底层实现:开启事务,启用锁机制
乐观锁:更新数据时候会判断在此期间是否有人更新过。
         底层实现:1.使用版本号 2.使用时间戳

9200和9300端口的区别:

9200端口: ES节点和外部通讯使用,暴露ES Restful接口端口号
9300端口: ES节点之间通讯使用,TCP协议、ES集群之间通讯端口号

倒排索引:

    把文档ID对应到关键词的映射转换为关键词到文档ID的映射,每个关键词都对应着一系列的文档,这些文档中都出现这个关键词。根据关键词查找文档ID迅速找出相关文档

ES如何解决高并发:

ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用分片机制、集群发现、分片负载均衡请求路由

Shards分片:代表索引分片,ES可以把一个完整的索引分成多个分片,好处是可以把一个大的索引拆分成多个,分布到不同节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
Replicas副本:代表索引副本,ES可以设置多个索引的副本。
副本的作用:
    1.提高系统的容错性,某个节点某个分片损坏或丢失时,可以从副本中恢复
    2.提高ES查询效率,ES会自动对搜索请求进行负载均衡

ES集群核心原理分析:

1.每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储,每个分片都会分布式在不同的节点上进行部署,该分片成为Primary shards主分片。

注意:索引主分片数量定后,不能被修改

          路由算法: shard = hash(routing) % number_of_primary_shards

          如果number_of_primary_shards在查询的时候取余发生变化,无法获取到该数据

2.每一个主分片为了实现高可用,都会有自己对应的副本,主分片对应的副本不能存放在同一台服务器上,主分片可以和其他副本存放在同一个Node节点上

?

如果此时Node-1节点是leader,Node-1节点down掉,此时会从(Node-2、Node-3)中选举一个节点作为一个Leader,不管某个节点挂掉,都能保证数据不丢失。除非所有节点全部down机

?

原文地址:https://www.cnblogs.com/chenxitag/p/chenxi_elasearch_01.html

时间: 2024-07-29 14:22:32

Elasticsearch框架基础概念的相关文章

WCF分布式开发步步为赢(1):WCF分布式框架基础概念

众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都推出了自己的中间件产品,比如Oracle Fusion和 SAP NetWeaver,IBM.BEA等企业也推出了自己基于SOA的解决方案.基于J2EE平台的SOA架构设计中的一个重要概念就是EJB企业服务总线,作用是实现各个系统的数据交互.而.NET平台上,WCF就是微软为各个系统的数据交互提供通讯

Struts2框架基础概念总结

一.struts2框架 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互.Struts2在Struts1融合webwork. ONGL表达式:就是对象图形化导航语言,在前端页面中,访问action的属性.方法;类似于认为就是对JSP的封装,是编程更加方便.(以下详解) 二.framework(框架) 一个基本概念上的结构,用于去解决或者处理复杂的问题,框架是在特

spring 框架基础概念理解

一. IOC 控制反转 概念解释:当我需要一个资源时,容器已经帮我准备好,我只需要接受就可以. // 加载 IOC 容器 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml") 当执行以上代码时,容器就已经加载好了所有资源.获取资源的方式如下. HelloWorld helloworld = (HelloWorld)ac.getBean("helloWorld&q

【嵌入式4412开发板学习教程】Uboot教程之uboot基础概念和框架

[4412开发板教程]Uboot教程之uboot基础概念和框架 正在学习uboot,教程讲解的很详细,先上个笔记,视频上传到网盘后再补上...... 知识点: 1.操作系统分层的概念 Windows:bios→内核模式→用户模式→用户程序 linux:bootloader→内核→文件系统→用户程序 2.bootboader种类介绍 U-boot是最通用的bootboader.(210,4412等等) vivi 针对三星的ARM来定制2440上有用到 3.4412休眠问题 它可以直接跳过uboot

Elasticsearch技术解析与实战(一)基础概念及环境搭建

基础概念 Elasticsearch是一个近实时的系统,从你写入数据到数据可以被检索到,一般会有1秒钟的延时.Elasticsearch是基于Lucene的,Lucene的读写是两个分开的句柄,往写句柄写入的数据刷新之后,读句柄重新打开,这才能读到新写入的数据. 名词解释: Cluster:集群. Index:索引,Index相当于关系型数据库的DataBase. Type:类型,这是索引下的逻辑划分,一般把有共性的文档放到一个类型里面,相当于关系型数据库的table. Document:文档,

Android Multimedia框架总结(五)多媒体基础概念

http://blog.csdn.net/hejjunlin/article/details/52431887 上篇中介绍了MediaPlayer从prepare到playback的其他过程,但是很多的一些音视频的基础概念可能还不是很清楚,今天将介绍下对于多媒体开发时,常常有一些基本概念.看下今天的Agenda: 对杂而乱的概念进行归类 视频部分相关 音频部分相关 先看一张图,这样常常在说的,是否真的了解它们真实含义: 对杂而乱的概念进行归类 视频分辨率 标清.高清.720P- 标清:意思就是"

框架基础:关于ajax设计方案(三)---集成ajax上传技术

之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的level2的改进就不介绍了,不清楚的可到前几篇博客去看看.我们直接切入主题. 概念介绍: 1. js的FormData:js中在新的版本中已经支持了FormData对象,可以初始化一个空的form,或者初始化已经存在的form,浏览器测试代码. 2. 浏览器的支持:浏览器已支持input=file的

框架基础:ajax设计方案(三)---集成ajax上传技术

之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的level2的改进就不介绍了,不清楚的可到前几篇博客去看看.我们直接切入主题. 概念介绍: 1. js的FormData:js中在新的版本中已经支持了FormData对象,可以初始化一个空的form,或者初始化已经存在的form,浏览器测试代码. 2. 浏览器的支持:浏览器已支持input=file的

框架基础:ajax设计方案(一)---集成核心请求

框架基础:ajax设计方案(一)---集成核心请求 框架基础:ajax设计方案(一)---集成核心请求 报告,我要说话!xp被历史淘汰了,IE6 say goodbye了,太TM开心了,从此不要兼容IE6了,哈哈哈哈哈哈 报告,我要说话!IE这sb为啥不早点被杀掉呢,找工作听说要兼容IE,立马软了,唉唉唉唉唉唉 报告,我要说话!Jquery太丰富了,老子只用了几个功能,妈的,太不划算了,啊啊啊啊啊啊 ...... 好了,言归正传.对于想到整理ajax设计方案,原因如下: 从资源合理利用的角度以及