es概念

作者: swoft_ | 来源:发表于2019-07-15 10:39 被阅读0次

    文档地址:https://es.xiaoleilu.com/

    倒排索引

    对比:

    • 正排索引 文档id到文档内容和文档单词的关联

    • 倒排索引 单词到文档id的关联

    • 正排索引 - 目录页

    • 倒排索引 - 索引页(书的最后会有单词对应的出现位置)

    举例:

    id | 文档内容
    -|-|-
    1 | elaset search
    2 | hello search
    3 | word search

    转成倒排索引

    word count id:position
    elastic 1 1:0
    hello 1 2:0
    word 1 3:0
    search 3 1:1,2:1,3:1

    概念

    • 文档 数据库中的具体一条记录
    • type 7.0之前一个索引会有多个type,一个type会有多个相同结构的文档。7.0之后一个索引只有一个文档_doc
    • 索引 一类文档的集合
    • 分片 创建索引的时候可以指定分片数量。
    • 节点 一个节点是一个es实例,是一个java进程

    分布式系统的可用性和高扩展性

    • 可用性:允许部分服务宕机
    • 数据可用性:部分节点数据丢失,不会丢失数据
    • 可扩展性:数据增多,数据可以分布到不同机器

    节点

    一个es的实例,就是java的一个进程。每一个节点都有一个名字,启动的时候制定,每个节点在启动之后会生成一个uid保存在data目录下。不同的节点可以承担不同的角色

    • 每个节点启动后默认是master-eligible,可以在启动的时候指定 (node.master = true)。
      • master-eligible可以参加选主流程,成为主节点
    • 第一个节点启动的时候,默认为主节点
    • 每个节点都保存了集群的状态,只有master可以修改集群的状态
      • 集群状态
        • 所有节点的信息
        • 所有的索引和相关的setting和mapping
        • 分片的路由信息
        • 任意阶段如果都能修改会导致集群的不一致性

    data节点

    可以存储数据的节点,负责保存分片上的数据(node.data=true)

    coordinate节点

    负责接受client请求,将请求发送到合适的节点,然后把结果汇集起来。
    每个节点都默认起到coordinate node的职责
    冷热节点...

    配置节点类型

    • 开发环境一个节点可以承担多个角色
    • 生成环境应该设置成单一的角色

    分片

    • 主分片 用来解决数据水平扩展问题,通过主分片,可以将数据复制到集群内的所有节点上
      • 一个分片就是一个Lucene实例
      • 主分片在创建索引的时候指定,后续不允许修改。
    • 副本分片 用来解决高可用的问题,是主分片的copy
      • 数量可以动态调整
      • 分片设定
        • 过小导致后续无法增加分片实现水平扩展(添加分片无效)
        • 单个分片数据量过大,导致数据重新分配耗时

    目录

    • bin 启动脚本 安装插件 运行统计数据
    • config
    • Data 数据文件
    • lib java 类库
    • logs
    • Modules 包含所有es模块
    • Plugins 包含已经安装的插件
    • 查看哪些插件 ./elasticsearch-plugin list

    使用插件可以搞一些安全策略来保护数据

    多实例部署命令

    搭建elk环境进行测试
    elasticsearch启动
    ./bin/elasticsearch -E node.name=node1 -E cluster.name=cluster_group -E path.data=node1_data -d
    ./bin/elasticsearch -E node.name=node2 -E cluster.name=cluster_group -E path.data=node2_data -d
    ./bin/elasticsearch -E node.name=node3 -E cluster.name=cluster_group -E path.data=node3_data -d
    
    
    • cluster_group 为集群名称,集群是通过名称来区分的。默认名称为elasticsearch,一个集群可以有多个节点
    • path.data 为数据存储位置

    kibana启动(版本要一致)
    kibana 端口 5601
    依赖es,所以先启动es
    7.0 支持汉化:kibana.yml 中加入 i18n.locale: "zh-CN"
    启动:./bin/kibana

    GET _cluster/health
    GET _cat/nodes 
    GET _cat/shards
    GET blogs/_mapping  
    GET blogs/_settings
    

    相关文章

      网友评论

          本文标题:es概念

          本文链接:https://www.haomeiwen.com/subject/avvgkctx.html