zoukankan      html  css  js  c++  java
  • ElasticSearch 简介概念及核心

    1.ES是什么

    ES是面向文档的Nosql,这意味着它可以存储整个对象或文档。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在es中,你可以对文档(而非成行成列的数据)进行索引,搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是es能够执行复杂的全文搜索的原因之一。

    ES使用json作为文档序列化格式。

    在ES中存储数据的行为叫索引(indexing)

    数据存储在索引中(index),索引有多个分片组成
    数据有类型(type)一个索引可以有多个类型
    数据是文档(document)

    一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。

    对比一下es和传统数据类型:
    (DB) database(数据库) -- table(表) -- row(行) -- column(属性)
    (ES) index (索引) -- type (类型) -- document(文档) -- filed(字段类型)

    索引
    user_result

    类型
    {
    "user_result": {
    //通过Mapping 映射
    "properties": {
    "createTime": {
    "type": "date"
    },
    "isDelete": {
    "type": "boolean"
    },
    "name": {
    "type": "keyword"
    },
    "id": {
    "type": "keyword"
    },
    "age": {
    "type": "integer"
    }
    }
    }
    }
    文档
    {
    "age": 26,
    "createTime": 1563713312228,
    "id": "123abc6",
    "isDelete": false,
    "name": "张三"
    }


    2.ES定义

     ES=Elasticsearch是一个开源的分布式全文检索引擎,它可以近乎实时的存储、检索数据;可以扩展到上百台服务器,处理PB级别的数据。 
    ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单

    3.ES核心

     3.1 Cluster 集群

          ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群

     3.2 Node 节点

          形成集群的每个服务器称为节点

     3.3 Shard 分片 

         1.ES中所有数据均衡的存储在集群中各个节点的分片中,会影响ES的性能、安全和稳定性。

         2.简单来讲就是咱们在ES中所有数据的文件块,也是数据的最小单元块,整个ES集群的核心就是对所有分片的分布、索引、          负载、路由等达到惊人的速度

       

    举例:

    假设 IndexA 有2个分片,我们向 IndexA 中插入100条数据 (100个文档),
    那么这100条数据会尽可能平均的分为50条存储在第一个分片,
    剩下的50条会存储在另一个分片中
         3.创建 Index索引时候,在 Mapping 中可以如下设置分片 (curl)

    PUT indexName
    {
    "settings": {
    "number_of_shards": 5
    }
    }
    注意:索引建立后,分片个数是不可以更改的

       4.分片的个数可根据索引数据量的大小来计算

    举例:

    如果 IndexA 所有数据文件大小是300G,改怎么定制方案了?
    建议:建10个节点 (Node),Mapping 指定分片数为 10,满足每一个节点一个分片,每一个分片数据带下在30G左右。
    SN(分片数) = IS(索引大小) / 30
    NN(节点数) = SN(分片数) + MNN(主节点数[无数据]) + NNN(负载节点数)
    3.4 Replia 副本

    为提高查询吞吐量或实现高可用性,可以使用分片副本。 
    副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。 
    当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。

    4.ES的可视化插件

    Head 谷歌应用中有

    Kibana 数据可视化展

    5.ES特点和优势

    1.分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到。 

    2.实时分析的分布式搜索引擎。 
      分布式:索引分拆成多个分片,每个分片可有零个或多个副本。集群中的每个数据节点都可承载一个或多个分片,并且协调和处理各种操作; 
      负载再平衡和路由在大多数情况下自动完成。 
    3.可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
    ---------------------

  • 相关阅读:
    C语言学习11(循环结构:for语句)
    C语言学习9(循环结构:while语句)
    C语言学习8(选择结构的嵌套)
    C语言学习笔记2
    C语言学习笔记1
    C语言的学习5(数据的输出)
    C语言学习12(函数的定义)
    第二十一章流 14临时文件 简单
    第二十一章流 12输出数据到文件指定位置处seekp() 简单
    第二十一章流 11指定读取文件中的数据seekg() 简单
  • 原文地址:https://www.cnblogs.com/ly570/p/11235465.html
Copyright © 2011-2022 走看看