集群基本概念

  1. [集群]
  2. [集群健康(cluster health)状态]
  3. : GET /_cluster/health
  4. // curl -H "Content-Type: application/json" -XGET 'http://192.168.10.10:9200/_cluster/health?pretty'
  5. //
  6. {
  7. "cluster_name" : "elasticsearch",
  8. "status" : "yellow",
  9. "timed_out" : false,
  10. "number_of_nodes" : 1,
  11. "number_of_data_nodes" : 1,
  12. "active_primary_shards" : 1,
  13. "active_shards" : 1,
  14. "relocating_shards" : 0,
  15. "initializing_shards" : 0,
  16. "unassigned_shards" : 1,
  17. "delayed_unassigned_shards" : 0,
  18. "number_of_pending_tasks" : 0,
  19. "number_of_in_flight_fetch" : 0,
  20. "task_max_waiting_in_queue_millis" : 0,
  21. "active_shards_percent_as_number" : 50.0
  22. }
  23. // status , 提供一个综合的指标来表示集群的的服务状况
  24. // - green 所有主要分片和复制分片都可用
  25. // - yellow 所有主要分片可用,但不是所有复制分片都可用
  26. // - red 不是所有的主要分片都可用
  27. [分片]
  28. : 主要分片(primary shard)和 复制分片(replica shard)

实体基本概念

  1. [索引 index]
  2. : 含有相同属性的文档集合
  3. // 只是一个用来指向一个或多个分片(shards)的“逻辑命名空间 (logical namespace)”.
  4. 类型:索引可以定义一个或多个类型,文档必须属于一个类型
  5. 文档:可以被索引的基础数据单位
  6. [分片]
  7. : 每个索引都有多个分片,每个分片都是 Lucene 索引
  8. // 分片(shard)是一个最小级别“工作单元(worker unit)”,它只是保存了索引中所有数据的一部分
  9. // 主分片(primary shard)或者是复制分片(replica shard)
  10. : /_index/_settings
  11. // 创建索引
  12. PUT /索引名
  13. {
  14. "settings" : {
  15. // 主分片数
  16. "number_of_shards" : 3,
  17. // 备份分片数
  18. "number_of_replicas" : 1
  19. }
  20. }
[基本实体概念]

    : 索引 _index
  : 类型 _type
  : 文档 _document  # _id 文档编号, 创建文档时指定或返回
  : 字段 _field

[类型 _type]

    : 相同类型(type)的文档表示相同的“事物”,因为他们的数据结构也是相同的
  : 每个类型(type)都有自己的映射(mapping)或者结构定义

[文档编号 _id]

    : 一个字符串,它与_index和_type组合时, 就可以在Elasticsearch中唯一标识一个文档

[面向文档 -> document ]

    : 存储整个对象或文档(document), JSON数据
  // 文档在Elasticsearch中是不可变的——我们不能修改他们

// 文档响应描述内容
{
  "_index" :   "索引",
  "_type" :    "类型",
  "_id" :      "文档编号",
  "_version" : 版本号,
  "found" :    true,
  "_source" :  { // 文档内容
      "字段" :  值,
  }
}

[]

[功能]

    : 索引 (indexing)
  : 搜索 (search)        -> _search ?q=字段:值 // 查询字符串(query string)搜索
  : 聚合 (aggregations)

    => 索引 PUT [创建/更新文档]

// 索引文档,
PUT /{index}/{type}/{id}
{
  "field": "value",
  ...
}

// 索引文档, 自动指定ID
POST /{index}/{type}
{
  "field": "value",
  ...
}

    => 检索 GET
    // pretty, 美化输出(pretty-print)JSON响应以便更加容易阅读
  // 返回的响应内容包括{"found": true}, 表示文档被检索到
  // - 检索只返回文档内容, /_source
  // - 检索文档部分字段, ?_source=字段1,字段2

    => 检查 HEAD
  // 检查文档是否存在, /_index/_type/_id

  => 删除 DELETE
[cluster]

    :一个集群, 多个节点, 一个为主节点, 主节点通过选举产生的

  :es中心化, 即对于集群外部来说逻辑上是个整体, 与任何一个节点的通信和与整个es集群通信是等价的

[shards]

    :索引分片, 一个完整的索引分成多个分片, 将一个大的索引拆分成多个分布到不同的节点上

  :构成分布式搜索, 分片的数量只能在索引创建前指定,并且索引创建后不能更改

  // 分片(shard)是一个最小级别“工作单元(worker unit)”,它只是保存了索引中所有数据的一部分

[replicas]

    :索引副本, 可以设置多个索引的副本, 副本的作用一是提高系统的容错性

  :当某个节点某个分片损坏或丢失时可以从副本中恢复, 提高es的查询效率, es会自动对搜索请求进行负载均衡

[recovery]

    :数据恢复或叫数据重新分布, 节点加入或退出时会根据机器的负载对索引分片进行重新分配

  :挂掉的节点重新启动时也会进行数据恢复

[river]

    :一个数据源, 它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中

[gateway]

    :索引快照的存储方式, 默认是先把索引存放到内存中, 当内存满了时再持久化到本地硬盘

  :gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据

  :es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS

[discovery.zen]

    :代表es的自动发现节点机制, es是一个基于p2p的系统

  :先通过广播寻找存在的节点, 再通过多播协议来进行节点之间的通信, 同时也支持点对点的交互

[Transport]

    :内部节点或集群与客户端的交互方式, 默认内部是使用tcp协议进行交互