目录:

1.  ElasticSearch是什么
2. 基本概念
3. 几个关键词
 
正文:
1.  ElasticSearch是什么
    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
 
2. 基本概念
   Lucene是由一个Java语言开发的开源全文检索引擎工具包。把Lucene用Netty封装成服务,使用JSON访问就说是Elasticsearch。
Elasticserach内置了对分布式集群和分布式索引的管理,所以相对Solr来说,不需要额外安装Zookeeper,其更容易分布式部署。
使用Elasticsearch的搜索系统整理架构图如下所示:
 
    Elasticsarch的每一个运行实例称为一个节点,即可以在同一台计算机上运行多个实例,也可以在每台计算机上只运行一个实例。
在一个分布式系统里,多个ES运行实例可以组成一个集群(cluster),该集群里有一个动态选举出来的主节点。如果主节点失败,会自动选出新的节点做为主节点,所以不存在单点故障。
   在同一个子网内,只需要在每个节点上设置相同的集群名,这些集群名相同的节点会自动组成一个集群。ES包含了节点和节点之间的通信模块及节点之间的数据分配和平衡模块。
   为了实现容错,ES会把查询文档集合分解为多个小的索引,每一个小的索引就叫做分片(shards)。每一个分片都可以有0到多个副本(replicas),而每一个副本也都是分片的完整复制品,这样也提高了查询速度。
    一旦ES的某个节点数据损坏或者服务不可用的时候,就可以用其他的节点来代替坏掉的节点,以达到高可用的目的。当有节点加入或者退出时,主节点会根据机器的负载对索引分片进行重新分配,当“挂掉”对节点再次重现启动对时候也会进行数据恢复(recovery)。
    ES通过网关(Gateway)来管理集群恢复,可以配置集群需要加入多少节点才能启动恢复数据。网关配置用于恢复任务失败的索引。当节点崩溃并重新启动时,ES将从网关读取所有的索引和元数据。
 

3. 几个关键词

索引:
     ES将它的数据存储在一个或者多个索引中。用sql领域的术语来类比,索引就像数据库,可以向索引写入文档或者从索引中读取文档,并通过ES内部使用的Lucene将数据写入索引或从索引中检索数据。
索引是具有某些类似特征的文档集合,索引由名称标识(必须全部小写)。
 
文档:
    文档是可以建立索引的基本信息单元。例如,您可以为单个客户提供文档,为单个产品提供一个文档,为单个订单提供一个文档。该文档以JSON(JavaScript Object Notation)表示,JSON是一种普遍存在的互联网数据交换格式。
在索引/类型中,您可以根据需要存储任意数量的文档。请注意,尽管文档实际上驻留在索引中,但实际上必须将文档编入索引/分配给索引中的类型。
 
映射(mapping):
    ES中的索引模式叫做Mapping。索引中的每个文档都有一个type,每个type拥有自己的模式或者模式定义。
用户可以设置一些参数,来决定如何将输入文本分割为词条,哪些词条应该被过滤掉,或者哪些附加处理时有必要被调用的。如排序时所需的字段内容信息,者就是mapping扮演的角色。
 
类型:
    ES中每个文档都有与之对应的类型定义。这允许用户在一个索引中存储多种文档类型,并为不同文档类型提供不同的映射。
 
节点:
     单个的ES服务实例称为节点(node)。很多时候部署一个ES节点就足以应付大多数简单的应用,但是考虑到容错性或在数据膨胀到单机无法应付这些状况时,你也许会更倾向于使用多节点的ES集群。

集群:
     集群(cluster)是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。
     集群由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为按名称加入集群的话,则该节点只能是集群的一部分。
确保不同的环境中使用不同的集群名称,否则最终会导致节点加入错误的集群。
     集群状态通过 绿,黄,红 来标识:
     绿色 - 一切都很好(集群功能齐全)。
     黄色 - 所有数据均可用,但尚未分配一些副本(集群功能齐全)。
     红色 - 某些数据由于某种原因不可用(集群部分功能)。
     注意:当群集为红色时,它将继续提供来自可用分片的搜索请求,但您可能需要尽快修复它,因为存在未分配的分片。

分片:
    索引可能存储大量可能超过单个节点的硬件限制的数据。例如,占用1TB磁盘空间的十亿个文档的单个索引可能不适合单个节点的磁盘,或者可能太慢而无法单独从单个节点提供搜索请求。
    为了解决这个问题,Elasticsearch 提供了将索引细分为多个称为分片的功能。创建索引时,只需定义所需的分片数即可。每个分片本身都是一个功能齐全且独立的“索引”,可以托管在集群中的任何节点上。
   设置分片的目的及原因主要是:

  • 它允许您水平拆分/缩放内容量;
  • 它允许您跨分片(可能在多个节点上)分布和并行化操作,从而提高性能/吞吐量;
  • 分片的分布方式以及如何将其文档聚合回搜索请求的机制完全由 Elasticsearch 管理,对用户而言是透明的。

在可能随时发生故障的网络/云环境中,分片非常有用,建议使用故障转移机制,以防分片/节点以某种方式脱机或因任何原因消失。为此,Elasticsearch 允许您将索引的分片的一个或多个副本制作成所谓的副本分片或简称副本。

副本:
     副本,是对分片的复制。目的是为了当分片/节点发生故障时提供高可用性,它允许您扩展搜索量/吞吐量,因为可以在所有副本上并行执行搜索。
总而言之,每个索引可以拆分为多个分片。索引也可以复制为零次(表示没有副本)或更多次。复制之后,每个索引将具有主分片(从原始分片复制而来的)和复制分片(主分片的副本)。
    可以在创建索引时为每个索引定义分片和副本的数量。创建索引后,您也可以随时动态更改副本数,但这不是一项轻松的任务,所以预先计划正确数量的分片是最佳方法。
    默认情况下,Elasticsearch 中的每个索引都分配了5个主分片和1个副本,这意味着如果集群中至少有两个节点,则索引将包含5个主分片和另外5个副本分片(1个完整副本),总计为每个索引10个分片。
 
网关:
    在ES的工作过程中,关于集群状态,索引设置的各种信息都会被收集起来,并在网关(gateway)中被持久化

ES-基本概念的更多相关文章

  1. ES核心概念和原理

    ES:1:倒排索引 基于Document 关键词索引实现 . 根据关键词做索引 相关度 a. 数据结构 i. 包含关键词的Document List ii. 关键词在每个doc中出现的次数 词频 TF ...

  2. es基本概念

    电商实时数据分析平台需要学些什么?  [运营指标,流量指标,销售转化指标,客户价值指标,商品指标,营销指标,风险控制指标,市场竞争指标]等电商指标数据. 检索,数据更新,排序,分词,query等缓存机 ...

  3. [ES] 基础概念

    Elasticsearch是基于Luence实现的一款搜索引擎,支持分布式和集群,并且搜索近实时,主要用于搜索和数据分析 索引 index 可以理解为数据库中的database,存储的是实际数据,因为 ...

  4. OpenGL ES(一.概念)

    OpenGL ES是以手持和嵌入式设备为目标的高级3D图形应用程序编程接口,主要的支持平台是iOS,Android,Linux和Windows 1.顶点着色器 他可以用于通过矩阵变换位置,计算照明公式 ...

  5. Elasticsearch之重要核心概念(cluster(集群)、shards(分配)、replicas(索引副本)、recovery(据恢复或叫数据重新分布)、gateway(es索引的持久化存储方式)、discovery.zen(es的自动发现节点机制机制)、Transport(内部节点或集群与客户端的交互方式)、settings(修改索引库默认配置)和mappings)

    Elasticsearch之重要核心概念如下: 1.cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是 ...

  6. lucene和ElasticSearch基本概念

    lucene基本概念 索引(Index) 对应一个倒排表,一个检索的基本单位.在lucene中就对应一个目录. lucene基本概念 段(Segment) 一个索引可以包含多个段,段与段之间是独立的, ...

  7. ES(一): 架构及原理

    Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,可以用于全文搜索,结构化搜索以及近实时分析.可以说Lucene是当今最先进,最高效的全功 ...

  8. C#如何使用ES

    Elasticsearch简介 Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定.可靠.快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的. Elas ...

  9. C# 如何使用 Elasticsearch (ES)

    Elasticsearch简介 Elasticsearch (ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好 ...

  10. C#使用ES

    C#如何使用ES Elasticsearch简介 Elasticsearch (ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为 ...

随机推荐

  1. centos 7配置静态IP,并配置DNS

    注意:四 个文件 cat /etc/sysconfig/network-scripts/ifcfg-eth0 cat /etc/sysconfig/network cat /etc/resolv.co ...

  2. 积性函数,线性筛入门 HDU - 2879

    HDU - 2879HeHe 题意:He[N]为[0,N−1]范围内有多少个数满足式子x2≡x (mod N),求HeHe[N]=He[1]×……×He[N] 我是通过打表发现的he[x]=2k,k为 ...

  3. vue-cli 本地代理 造成session丢失 而登录不上去 解决办法

    本地代理造成session丢失,登录不成功,是由于代理配置造成的 devServer: { port: 8000, proxy:{ '/qiantai':{ target:'线上地址/qiantai' ...

  4. 5.使用Ribbon实现客户端侧负载均衡

                                Ribbon实现客户端侧负载均衡 5.1. Ribbon简介 Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法 ...

  5. ARTS打卡计划第十二周

    Algorithms: https://leetcode-cn.com/problems/balanced-binary-tree/ 平衡二叉树. Review:  “What I Learned i ...

  6. 第10组Alpha冲刺(3/4)

    队名:凹凸曼 组长博客 作业博客 组员实践情况 童景霖 过去两天完成了哪些任务 文字/口头描述 继续学习Android studio和Java 制作登录注册界面前端 展示GitHub当日代码/文档签入 ...

  7. 如何在linux中发送邮件,使用163邮箱发信。

    linux中,可以使用mail命令往外发送邮件,在使用前,只需要指定如下简单配置即可,这里演示用  163.com    邮箱发送至 qq.com 编辑 /etc/mail.rc,写入下方的参数 se ...

  8. shell 基数数值方法

    shell 下获取数值的结果 1. # expr 1 "+" 2 2. # echo "1+2" |bc 3. # echo $(( 1+3))

  9. 数据库 | SQL查询&LIMIT的用法

    body{ text-align:left; width:80%; margin:10px 100px; } 前言 select top n 形式的语句可以获取查询的前几个记录,但是 mysql没有此 ...

  10. JDK8记FullGC时候Metaspace内存不会被垃圾回收

    本文链接:https://blog.csdn.net/a15939557197/article/details/90635460背景前段时间有一个这样的需求:第三方调用接口,30分钟内调用120W次: ...