• ElasticSearch


    ElasticSearch 是一个采用Restful API标准同时具有高扩展性和高可用性的实时数据分析全文搜索工具

      Node(节点):单个的装有ElasticSearch服务并且提供故障转移和扩展的服务器

      Cluster(集群):一个集群就是由一个或多个node组织在一起,共同工作,共同分享整个数据具有负载均衡功能的集群,默认

    为"elasticsearch"。节点就是靠此名字来决定加入到哪个集群中。一个节点只能属性于一个集群


      Cluster工作过程:启动时,通过多播(默认)或单播方式在9300/tcp查找同一集群中的其它节点,并与之建立通信集群中的所有节

    点会选举出一个主节点负责管理整个集群状态,以及在集群范围内决定各shards的分布方式。站在用户角度而言,每个均可接收并响应

    用户的各类请求

      集群有状态:green, red, yellow

      Document(文档):一个文档是一个可被索引的基础信息单元

      Index(索引):索引就是一个拥有几分相似特征的文档的集合

      TYPE(类型):一个索引中你可以定义一种或多种类型

      Field(列):Field是ElasticSearch的最小单位,相当于数据的某一列

      Shards(分片):ElasticSearch将索引分成若干份,每个部分就是一个shard,ES默认将其分割为5个shard,用户也可以按需自

    定义,创建完成之后不可修改

      Replicas(复制):Replicas是索引一份或多分拷贝,Replica用于数据冗余及查询时的负载均衡。每个主shard的副本数量可自定

    义,且可动态修改

    下图介绍了ElasticSearch的索引是如何存储的:

      

     

    一个比较形象的了解可以看下图,它和mysql的一一对应关系

      

     

    ElasticSearch的架构图如下:

      

    底层Gateway表示ElasticSearch支持的数据存储格式,上面一层是lucene的框架,再上面一层是ElasticSearch对数据的加工处理方

    式,Index Module:创建Index的模块

    Search Module:搜索的模块 Mapping定义索引下面type字段的处理规则,比如索引如何建立,索引类型等

    上一层Zen是用来实现节点自动发现,还有Master节点选取,假如Master出现故障,其它的这个节点会自动选举,产生一个新的

    Master

    Scripting 是ElasticSearch的脚本执行功能,能很方便对查询出来的数据进行加工处理


    ElasticSearch是基于P2P的系统,首先通过广播的机制寻找存在的节点,然后再通过多播协议来进行节点间的通信,同时支持点对点的

    交互


    Transport为ElasticSearch的交互方式,默认使用http协议传输

    API:Application Programming Interface的缩写,中文意思就是应用程序接口,使应用程序的使用人员无需访问应用程序的源码或

    者了解内部的工作机制,就能基于这个接口去访问这个应用程序的数据

    XML:可扩展标记语言,是一种程序与程序之间传输数据的标记语言(简单的说就是将一个程序里的数据传到另一个程序里)

    JSON:javascript object notation的缩写,它是一种新型的轻量级数据交换格式(XML的替代品)

    RESTFul:Representational State Transfer的缩写,中文意思是“表现层状态转换”,这句话有两个内容,第一个是"表现层",第二个

    是"状态转换",表现层指的是资源的表现层,这里的资源指的是网络上的信息,比如说一段文本,一张图片,一部电影等等,每个资源

    在网络上都有一个标识,这个标识一般叫做URL,把资源具体呈现出来的这种形式叫做表现层,而状态转换是要建立在表现层之上的

    常规索引建立方式:文档-->关键词的映射过程(正向索引)

    缺点:费时,得把整个文档全部遍历一遍

    倒排反向建立索引:关键词-->文档的映射,把正向索引的结果重新构造成倒排索引(反向索引),ElasticSearch使用的是倒排索引


    Restful API:
    四类API:
    (1) 检查集群、节点、索引等健康与否,以及获取其相应状态;
    (2) 管理集群、节点、索引及元数据;
    (3) 执行CRUD操作;
    (4) 执行高级操作,例如paging, filtering等;

    ES访问接口:9200/tcp

    curl -X<VERB> '<PROTOCOL>://HOST:PORT/<PATH>?<QUERY_STRING>' -d '<BODY>'

    VERB: GET, PUT, DELETE等;

    PROTOCOL: http, https

    QUERY_STRING:查询参数,例如?pretty表示用易读的JSON格式输出;

    BODY: 请求的主体

     

  • 相关阅读:
    [转载红鱼儿]delphi 实现微信开发(1)
    Devexpress VCL Build v2013 vol 14.1.3 发布
    [翻译]LSP程序的分类
    睡眠不好
    LuaStudio 9.27 去10分钟退出暗桩板
    vs2012 提示 未能正确加载 "Visual C++ Language Manager Package" 包 的解决办法
    岁月蹉跎
    重新安装系统之前备份
    运动会
    乱思
  • 原文地址:https://www.cnblogs.com/linuxboke/p/5683103.html
Copyright © 2020-2023  润新知