zoukankan      html  css  js  c++  java
  • ES系列三、基本知识准备

    一、基础概念

    1、索引

    索引(index)是elasticsearch的一个逻辑存储,可以理解为关系型数据库中的数据库,es可以把索引数据存放到一台服务器上,也可以sharding后存到多台服务器上,每个索引有一个或多个分片,每个分片可以有多个副本。

    2、索引类型(index_type)

    在es中,一个索引对象可以存储多个不同用途的对象,通过索引类型(index_type)可以区分单个索引中的不同对象,可以理解为关系型数据库中的。每个索引类型可以有不同的结构,但是不同的索引类型不能为相同的属性设置不同的类型。

    在ES6.0.0及更高的版本中,创建的索引只能包含一个映射类型。在6.0.0以下的版本中创建的一个索引映射多个类型的索引在6.0.0版本中继续发挥作用,但是将在7.0.0中完全删除

    3、文档(document)

    存储在es中的主要实体叫文档(document),可以理解为关系型数据库中表的一行记录。每个文档由多个字段构成,es是一个非结构化的数据库,每个文档可以有不同的字段,并且有一个唯一的标识符

    4、映射(mapping)

    Mapping,就是对索引库中索引的字段名及其数据类型进行定义。

    ES默认是动态创建索引和索引类型的mapping的。这就相当于无需定义Solr中的Schema,无需指定各个字段的索引规则就可以索引文件,很方便。但有时方便就代表着不灵活。比如,ES默认一个字段是要做分词的,但我们有时要搜索匹配整个字段却不行。如有统计工作要记录每个城市出现的次数。对于NAME字段,若记录“new york”文本,ES可能会把它拆分成“new”和“york”这两个词,分别计算这个两个单词的次数,而不是我们期望的“new york”。

    这时,就需要我们在创建索引时定义mapping。此外,es支持多字段结构,例如:我们希望两个字段中有相同的值,一个用于搜索,一个用户排序;或者一个用于分词器分析,一个用于空白字符。

    二、核心概念

    1、分片

           一个分片本身就是一个完整的搜索引擎。文档存储在分片中,而分片则会被分配到集群中节点中,随着集群的扩大和缩小,es会自动地将分片在节点之间进行迁移,以保证集群能保持一种平衡。

           1.如果我们的索引数据量很大,超过硬件存放单个文件的限制,就会影响查询请求的速度。Es引入了分片技术;

           2.将一个完整的index分成若干部分存储在相同或不同的节点上。

           3. 每个分片都有自己搜索,更新,删除等和index一样全部功能的一小块。

           4.好处:水平分割和扩展我们存放的内容索引;分发和并行跨碎片操作提高性能/吞吐量;

           5.假设索引为firsttime,在elasticsearch-xx/data/elasticsearch/0/indices/firsttime下有5个分片,从0-4;

    2、副本:replica

      1.冗余备份,防止数据丢失;

      2.负载均衡

    一个索引中含有主分片的数量,默认值为5,在索引创建后这个值是不能被更改的。

    每一个主分片关联的副本分片的数量,默认值为1,这个设置在任何时候都可以修改。

    对副本分片数量的修改:

       假设主分片为4,副本分片为2,则就有12条分片,其中4条主分片,8条副分片;

    三、ES的发展历程

    Elasticsearch 后来作为一家公司(Elastic公司)进行运作,定位为数据搜索和分析平台。在2014年6月获得7000万美元融资,累积融资过亿美元。

    ES现在可以与Java、Ruby、Python、PHP、Perl、.NET等多种客户端集成。也可与Hadoop、Spark等大数据分析平台进行集成,功能十分强大。

    基于Elasticsearch衍生出了一系列开源软件,统称为 Elatic Stack

    说明:

    因为logstash比较耗内存,所以用Beats来替代

    为避免版本混乱,从5.0开始,Elastic公司将各组件的版本号统一。使用时,各组件版本号应一致(版本号形式:x.y.z,z可以不同)。

    四、ES的特性

    官网的介绍: https://www.elastic.co/cn/products/elasticsearch

    速度快、易扩展、弹性、灵活、操作简单、多语言客户端、X-Pack、hadoop/spark强强联手、开箱即用。

    分布式:横向扩展非常灵活
    全文检索:基于lucene的强大的全文检索能力;
    近实时搜索和分析:数据进入ES,可达到近实时搜索,还可进行聚合分析
    高可用:容错机制,自动发现新的或失败的节点,重组和重新平衡数据
    模式自由:ES的动态mapping机制可以自动检测数据的结构和类型,创建索引并使数据可搜索。
    RESTful API:JSON + HTTP

    五、ES的应用场景

    六、ES的架构

     

    说明:

    Gateway是ES用来存储索引的文件系统,支持多种类型。
    Gateway的上层是一个分布式的lucene框架。
    Lucene之上是ES的模块,包括:索引模块、搜索模块、映射解析模块等
    ES模块之上是 Discovery、Scripting和第三方插件。Discovery是ES的节点发现模块,不同机器上的ES节点要组成集群需要进行消息通信,集群内部需要选举master节点,这些工作都是由Discovery模块完成。支持多种发现机制,如 Zen 、EC2、gce、Azure。Scripting用来支持在查询语句中插入javascript、python等脚本语言,scripting模块负责解析这些脚本,使用脚本语句性能稍低。ES也支持多种第三方插件。
    再上层是ES的传输模块和JMX.传输模块支持多种传输协议,如 Thrift、memecached、http,默认使用http。JMX是java的管理框架,用来管理ES应用。
    最上层是ES提供给用户的接口,可以通过RESTful接口和ES集群进行交互。

  • 相关阅读:
    STM32驱动WS2811
    Arduino编程器 USBasp USBtinyISP FT232-ISP 对比 区别
    USBasp制作资料及全过程(菜鸟版)
    用74HC165读8个按键状态
    C++ 使用TinyXML解析XML文件
    SD卡中FAT32文件格式快速入门(图文详细介绍)
    一个UUID生成算法的C语言实现——WIN32版本
    关于STM8S使用硬件SPI收发问题
    设计模式介绍、分类、原则
    构建完整的知识体系
  • 原文地址:https://www.cnblogs.com/wangzhuxing/p/9404587.html
Copyright © 2011-2022 走看看