集群基本概念
[集群][集群健康(cluster health)状态] : GET /_cluster/health // curl -H "Content-Type: application/json" -XGET 'http://192.168.10.10:9200/_cluster/health?pretty' // { "cluster_name" : "elasticsearch", "status" : "yellow", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 1, "active_shards" : 1, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 1, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 50.0} // status , 提供一个综合的指标来表示集群的的服务状况 // - green 所有主要分片和复制分片都可用 // - yellow 所有主要分片可用,但不是所有复制分片都可用 // - red 不是所有的主要分片都可用[分片] : 主要分片(primary shard)和 复制分片(replica shard)
实体基本概念
[索引 index] : 含有相同属性的文档集合 // 只是一个用来指向一个或多个分片(shards)的“逻辑命名空间 (logical namespace)”. 类型:索引可以定义一个或多个类型,文档必须属于一个类型 文档:可以被索引的基础数据单位[分片] : 每个索引都有多个分片,每个分片都是 Lucene 索引 // 分片(shard)是一个最小级别“工作单元(worker unit)”,它只是保存了索引中所有数据的一部分 // 主分片(primary shard)或者是复制分片(replica shard) : /_index/_settings// 创建索引PUT /索引名{ "settings" : { // 主分片数 "number_of_shards" : 3, // 备份分片数 "number_of_replicas" : 1 }}
[基本实体概念]
: 索引 _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协议进行交互