search(1)- elasticsearch结构概念
上篇提到选择了elasticsearch ES作为专业化搜索引擎的核心,这篇讨论一下ES的基本结构和应用概念。首先,从硬结构方面来讲:ES是在一个集群(cluster)环境里运行的,所以ES应该具备高可用和高扩展特性,因为系统可以分布在机器内无数个节点(node)服务器上运行。ES的索引(index)分布在集群中各node上。ES的index又可以向下分成多个shard分片。因为ES是基于lucent的,ES的shard就是一个完整的lucent index。所以,ES index是一个shard集合,也就是lucent index集合。在定义ES index时必须指定该index的shard(primary)数量,之后不得修改。这就意味着每个ES index需要占用一个以上shard,而shard是ES index操作的最小单元,也就是说一个shard只能存放一种ES index索引文件(document)。
在ES7之前的版本表面上每个index里又分不同的document type,可以分辨不同类型的document。但因为ES index是shard集合,或者lucent index集合,而lucent index并没有document type的概念,基本上是一种nosql (schemaless)存储结构,所以ES7之后就取消了_type这层,其结果就变成每个ES index只能容许一种document操作。
很多人认为ES也是数据库系统,ES7之前普遍认识是:index -> database, type -> table, document -> row。ES7之后在某种意义上index就是table了。所以:把ES作为应用系统的数据库来使用是大大不妥的。因为应用系统由众多数据表组成关系数据库,在ES上就意味着必须构建众多的index,会出现大量的细小shard(table)分布在集群节点上,严重影响效率。
ES7是个集群体系:cluster->nodes->index->shards。shard又分primary shard和replica shard (pshard,rshard)。一般来说pshard和rshard相互应分布在不同的node上。所有写操作由pshard负责,或者说先在pshard上执行后再把结果分发到隶属各rshard。读取操作采取就近读取策略以实现快速响应。
ES的底层操作是由lucent实现的。在lucent操作时shard又被细分一层到segment:luccent shard是由多个segment组成的,lucent的写操作先写入一块缓存(write-buffer),然后以一种提交形式再以一个segment为单元存写入shard。
ES是某种nosql数据库,但在存写数据时又对数据,特别是字符text类型的数据进行了分拆处理,所以ES存写即是更新索引indexing。从另一个角度说明:ES是一个索引容器(index container),是一个完整封闭的容器。index的构建、维护、使用等都是通过ES提供的一些工具软件以及一套HTTP-api来实现的。数据输入可以用工具(如logstash)进行批次型的indexing,实时indexing是通过HTTP-api实现的。
ES自带一套REST-api可以对index进行更新、搜索、统计、提取。
ES-REST-api的功能可以说是相当全面,但复杂、不易掌握、使用要求门槛高,且不易作为系统整合工具。为了实现ES在行业IT系统的普遍应用,应该绕过复杂的ES-REST-api,在ES之上设计一套连接ES-HTTP通道的REST-api作为ES和前端(web,mobile)的桥梁,把前端搜索条件翻译成ES JSON格式的搜索指令发送至ES,然后对搜索结果进行简化、筛选处理,以某种简洁通用的格式呈现给前端。最终目的其实是为了降低前端开发人员引用ES的技术门槛。
search(1)- elasticsearch结构概念相关推荐
- lucene和elasticsearch的前世今生、elasticsearch的核心概念、elasticsearch核心概念 vs. 数据库核心概念(来自学习资料)
1.Lucene和elasticsearch的前世今生 lucene,最先进.功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理 ...
- 大白话ElasticSearch入门概念,看不懂找我!
点击上方蓝色"胖滚猪学编程",选择"设为星标" 跟着胖滚猪学编程!好玩!有趣! 这是胖滚猪ES系列博文第三篇,大白话ElasticSearch入门概念. 阅读本 ...
- 【Linux 内核】SMP 对称多处理器结构 ( SMP 对称多处理器结构概念 | SMP 对称多处理器结构的优势与缺陷 | Linux 内核兼容多处理器要求 )
文章目录 一.SMP 对称多处理器结构概念 二.SMP 对称多处理器结构的优势与缺陷 三.Linux 内核兼容多处理器要求 一.SMP 对称多处理器结构概念 对称多处理器结构 , 英文名称为 &quo ...
- QML 编程之旅 -- QML程序的基本结构概念
文章目录 QML 文档的构成 QML基本语法 QML 编程之旅 – QML程序的基本结构概念 学习Qt编程快近一年了,的确是项目驱动,让我不得不咬紧牙关,需要快速的学习掌握一门新的技术.编程是一个非常 ...
- 【JY|理念】结构概念设计之(设计理念进展)
不犹豫 即关注 "通俗讲概念设计" 这一期给大家带来 结构设计理念进展与结构概念的依我之见. 首先讲下结构概念设计,概念设计一般是指不经数值计算,尤其在一些难以作出精确理性分析或在 ...
- java语言保留结构和联合_Java 语言中取消了联合概念,保留了结构概念。( )_学小易找答案...
[单选题]Graves病最严重的临床表现是 [判断题]Java 语言中取消了联合概念,保留了结构概念.( ) [单选题]下列关于子类继承父类的成员的描述中,错误的是 . [多选题]冯.诺依曼机确立计算 ...
- 【JY】结构概念设计之(隔震概念设计)
一.抗震与隔震概述 在地震过程中,造成人员伤亡和财产损失的主要原因是建筑结构的破坏和倒塌(楼板落地是倒塌的标志).因此,要减少或避免地震灾害的重要途径是增加建筑结构的抗震能力,使建筑结构在地震作用下少 ...
- Elastic Search 介绍和基本概念
Elastic Search 特点 Elastic Search 可能是是当下最火的搜索引擎中间件了.为什么这么火呢?主要是因为他有几大绝艺: 快速.无论什么时候,你需要向 ES 查询你的数据,都能够 ...
- Elasticsearch 基本概念
文章目录 1.存储结构 1.1 index 1.2 type 1.3 document 1.4 field 1.5 mapping limit dynamic 2.集群概念 2.1 cluster 2 ...
最新文章
- opencv-python 9.4 拆分及合并图像通道
- Android高级模糊技术RenderScript和FastBlur
- junit jndi_使用Spring创建用于JUnit测试的JNDI资源
- 玫瑰花函数matlab,网上收到的用matlab画玫瑰花的代码怎么不行啊,报告错误,求大神...
- 数据结构课上笔记14
- TiKV 源码解析系列 - Raft 的优化
- SpringMvc-参数为数组
- 3D引擎多线程:资源异步加载
- banner图/轮播图----html
- ADAS技术市场总结展望(2021年-2022年)
- 谷歌Adblock Plus 广告拦截插件-屏蔽百度热搜和推荐(附网盘下载地址)
- Java 开发实例(第3篇),绘制迷宫1 生成迷宫地图
- 试题 算法提高 字符串跳步
- Vue.js---关闭语法检查
- 小白操作:zuul网关升级为getway网关,以及jwt的使用
- 苏索轰世界波 米兰2:0热那亚重返意甲前四
- JAVA 用enum 来枚举java项目中的错误信息
- VIM如何将全部内容复制并粘贴到外部
- mysql的mtr是指什么_关于innodb mtr模块
- CRM系统的灵活运用