上篇提到选择了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结构概念的更多相关文章

  1. ElasticSearch 全文检索— ElasticSearch 核心概念

    ElasticSearch核心概念-Cluster 1)代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字 ...

  2. Elasticsearch入门教程(二):Elasticsearch核心概念

    原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...

  3. ElasticSearch 核心概念

    ElasticSearch核心概念-Cluster ElasticSearch核心概念-shards ElasticSearch核心概念-replicas ElasticSearch核心概念-reco ...

  4. ELK 学习笔记之 elasticsearch基本概念和CRUD

    elasticsearch基本概念和CRUD: 基本概念: CRUD: 创建索引: curl -XPUT 'http://192.168.1.151:9200/library/' -d '{" ...

  5. 【ElasticSearch】概念

    小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 对小史面试情况感兴趣的同学可以观看面试现场系列. 随着央视诗词大会的热播,小史开始对诗词感兴趣 ...

  6. Elasticsearch基本概念和使用

    Elasticsearch基本概念和使用 1.操作索引 1.1.基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的. 对比关系: 索引( ...

  7. Elasticsearch核心概念

    Elasticsearch 核心概念 Cluster 代表一个集群, 集群中有多个节点, 其中一个为主节点, 该节点可以通过选举产生.(主从节点只针对于集群内部) 去中心化: 对于集群外来说无中心节点 ...

  8. ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询

    基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...

  9. elasticsearch基本概念与查询语法

    序言 后面有大量类似于mysql的sum, group by查询 elk === elk总体架构 https://www.elastic.co/cn/products Beat 基于go语言写的轻量型 ...

随机推荐

  1. Facebook推云存储,究竟是福利还是陷阱?

    被全球人民diss了很长时间的Facebook,近段时间也是穷尽各种办法来挽回自己的声誉.除了不断的道歉.做出各种保护隐私承诺外,Facebook还在旗下产品的功能上玩转新花样.如,前些日子Faceb ...

  2. 机器人可以拥有社交智能吗?——微软雷德蒙研究院院长Eric Horvitz与他的个人虚拟助理之梦

    Horvitz与他的个人虚拟助理之梦" title="机器人可以拥有社交智能吗?--微软雷德蒙研究院院长Eric Horvitz与他的个人虚拟助理之梦">编者按:到 ...

  3. python学习笔记(11)文件操作

    一.读文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...

  4. JarvisOJ level3_x64

    这一题是和前面x86的差不多,都是利用了同一个知识点,唯一的区别就是使用的堆栈地址不同,x86是直接使用堆栈来传递参数的,而x64不同 x64的函数调用时整数和指针参数按照从左到右的顺序依次保存在寄存 ...

  5. MYSQL语句中的explain

    1.使用mysql explain的原因 在我们程序员的日常写代码中,有时候会发现我们写的sql语句运行的特别慢,导致响应时间特别长,这种情况在高并发的情况下,我们的网站会直接崩溃,为什么双十一的淘宝 ...

  6. Ionic 4 beta + Capacitor beta 尝鲜

    本文为原创文章,转载请标明出处 开发环境: Ionic 4 beta 3.Capacitor beta 6. 首先 ionic start 工程名 blank --type=angular,问是否集成 ...

  7. 国内游戏直播火热 为何YY游戏直播却巨亏

    为何YY游戏直播却巨亏" title="国内游戏直播火热 为何YY游戏直播却巨亏"> 伴随"千万年薪主播"."美女主播陪玩那些事儿&q ...

  8. 最新中文版虚拟机VMware Workstation隆重上市

    vmware虚拟机 在虚拟机软件中VMware Workstation算是一款非常强大较稳定的软件了,今天 VMware Workstation 10.0正式发布了,最让人欣喜的是该版本终于有了简体中 ...

  9. GDB调试指南-单步调试

    前言 前面通过<启动调试>,<断点设置>,<变量查看>,我们已经了解了GDB基本的启动,设置断点,查看变量等,如果这些内容你还不知道,建议先回顾一下前面的内容.在启 ...

  10. Presto单机/集群模式安装笔记

    Presto单机/集群模式安装笔记 一.安装环境 二.安装步骤 三.集群模式安装: 3.1 集群模式修改配置部分 3.1.1 coordinator 节点配置. Node172配置 3.1.2 nod ...