Elasticsearch 基本概念,集群工作流程, Kibana增、删、改、查可视化基础操作

Elasticsearch面向文档型的NoSQL数据库,继承了Lucene的简洁语法表述,同时分布式实时文件存储,实时分析的分布式搜索引擎,可单台PC运行亦可集群。

1、Elasticsearch的全文检索库——Lucene

  • lucene基础概念

    文档(document):索引与搜索的主要数据载体,存放要写入索引或者将从索引搜索出来的数据
    字段(field):文档的一个片段,包括字段名称和内容
    词项(term):搜索时的一个单位,代表文本中的某个词
    词条(token):词项在字段中的一次出现,包括词项的文本,开始和结束的位移以及类型
    Lucene将写入索引的所有信息组织成倒排索引的结构——将词项映射到文档的数据结构。倒排索引面向词项,而不是文档。
    Lucene将文档中的数据转化为倒排索引的过程称为分析,文本分析由分析器执行,分析器由分词器(tokenizer)、过滤器(filter)和字符映射器组成

2、Elasticsearch涉及到的相关概念

  • Cluster/Node

    Cluster——搜索服务集群,Node——组成Cluster集群的节点
    Node分:IndexNode(提供读写)、DataNode(提供数据存储和访问,负载均衡)
    Node节点之间的关系对等(去中心化)。Master节点仅多了维护集群状态的功能。
    Node节点的集群状态数据都是实时同步的。Master节点崩溃,其他Node节点会被选举为新的Master节点。

  • Shards 分片

    Elasticsearch将数据散步到多个物理Lucene索引上,这些Lucene索引称为分片(shard),而散步这些分片的过程叫做分片处理。Elasticsearch会自动完成分片处理,并且让这些分片呈现出一个大索引的样子。分片索引的数量在索引创建时候就配置好了,后续无法改变。

  • Replicas

    索引的冗余备份,防止数据丢失或者用于负载均衡

  • Recovery

    在节点加入,或者退出集群Cluster,或者故障重启时,Elasticsearch根据机器负载情况,对索引分片(shards)进行重新分配。

  • Gateway

    Elasticsearch索引数据快照的存储方式,当Elasticsearch集群关闭再重启时,就会从Gateway中读取索引数据快照。

  • Discovery.zen

    Elasticsearch的自动发现节点机制,Zen:用来实现节点自动发现和Master节点选举,Master节点负责处理节点的加入和退出以及分片(shards)的重新分配。

  • Index 、Type 、Document 、Field

    Index:
    Elasticsearch存储数据的地方,可以快速高效的对索引中的数据进行全文检索,类似于数据库中的DataBase,一个Index下一般对应多个Type

    type:
    类似于Database中的Table,用来存放具体数据

    Document :
    类似于关系型数据库中的数据行,每一个Type都有一个唯一的Id作为区分。数据插入的时候,可以指定Id值,也可以不指定ES默认生成。

    Field :
    类似关系数据库中的某一列,是Elastic数据存储最小单位

3、Elasticsearch工作流程

  • 启动过程

    当Elasticsearch节点启动时,它使用广播技术发现同一个集群中的其他节点(node)并建立连接,集群中会有一个节点被选为管理节点(master node),master节点负责集群状态管理,以及就能变化时做出反应,分发索引分片至集群的相应节点上。

  • 故障检测

    集群正常工作时,master节点会监控所有可用节点,如果任何一个节点在预定义的时间内没有响应,则认为该节点已经断开。那么在集群-分片之间需要重新平衡。
    如果断开的是主节点,那么集群会重新选举出一个Master Node,然后再进行集群-分片平衡操作。

  • 索引建立过程

    索引建立操作只会发生在主分片上,不会发生在副本上。客户端发送建立索引的请求——ES集群某一个Node接收到了这个请求——Node检测自身有没有对应的主分片——没有主分片或者只有副本,那么请求会被转发到有主分片的Node节点。
    在这里插入图片描述

  • 查询数据过程

    查询分为两个阶段:分片阶段和合并阶段,分片阶段将query分发到包含相关文件的分片中执行查询,合并阶段则从众多分片中收集返回结果,对结果进行合并,排序,后续处理然后返回给客户端(可视为返回的文档)。

4、Kibana可视化操作

  • kibana建立索引

    索引建立后,索引设置不允许修改。未设置的值,ES默认系统默认值。

    #建立test_idx_e索引,五个分区分片,1个冗余索引备份(副本数)
    PUT test_idx_e
    { 
      "settings":{
        "index":{
          "number_of_shards":5,
          "number_of_replicas":1
          # "blocks.read_only":true  当前索引只允许读,不允许写,或者更新
          # "blocks.read":true  当前索引禁止读取
          # "blocks.write":true 当前索引禁止写操作
          # "blocks.metadata":true 禁止对metadata操作
        } 
      }
    }
    
    #查看建立的索引信息
    GET test_idx_e/_settings
    
    #查看指定索引文件的状态信息
    GET test_idx_e/_stats
    

    _stats字段:
       docs: 被索引文档信息,count值表示描述的索引中的文档数量
       store: 索引的大小
       indexing: 索引的操作信息
       get: 实时获取操作信息
       search: 搜索操作信息

  • Kibana 对数据增、删、改、查

    自定义ID插入的PUT语句执行时,ID对应记录存在则修改,不存在新增

    #test_idx_e索引test_tpe_e类型下,新增id为id_a的数据——指定id值
    PUT test_idx_e/test_tpe_e/id_a
    {
      "username":"张三",
      "age":18,
      "address":"xxx省xx市区"	
    }
    #查询上面插入的数据信息
    GET test_idx_e/test_tpe_e/id_a
    #修改插入的信息
    PUT test_idx_e/test_tpe_e/id_a
    {
      "username":"张三123",
      "age":18,
      "address":"xxx省xx市区",
      "married":true
    }
    #删除插入的数据信息
    DELETE test_idx_e/test_tpe_e/id_a
    
    #---------系统默认id插入
    POST test_idx_e/test_tpe_e/
    {
      "username":"张三12",
      "age":18,
      "address":"xxx省xx市区",
      "married":true
    }
    
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值