ES对于数据上的数据模型如下:
index type document field mapping
与数据库的概念一一对应的为
db table row column schema
ES 导入数据时会自动的建立document的mapping, 导入的数据为json数据格式
ES 中所有的搜索都是基于文档的,在此基础上又三种搜索方式:
检索(根据 index, type, id 查找某一文档)
搜索(调用 search接口根据query进行简单或者复杂的条件进行搜索,包括简单搜索,复杂搜索,全文搜索,段落搜索)
聚合统计 ( 调用 search接口根据aggs 进行各种统计操作,并且可以配合query进行使用)
一个节点(node)就是一个Elasticsearch实例,一个集群由多个节点组成,它们拥有相同的
cluster。name. 当加入新的节点或者删除一个节点时,集群就会自动感知到并平衡数据。
集群中的一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或者删除索引。主节点不参与文档级别的变更或者搜索,该节点不会成为集群的瓶颈。
集群健康:
集群监控有三种状态: green, yellow 或red
颜色 意义
green 所有的主要分片和复制分片都可用
yellow 所有主要分片可用,但不是所有复制分片都可用
red 不是所有的主要分片都可用
主要分片(primary sahrd) 复制分片(replica shard)
索引:
索引(index)关联存储数据的地方,用来指向一个或多个分片(shards)的 逻辑命名空间
分片:
一个分片(shard)是一个最小级别 "工作单元(worker unit)",保存了索引的一部分数据,(可以理解为hadoop中hdfs的块以及mapreduce中的task集合体,即处理一块数据的数据和程序)
实现上 一个分片就是一个Luence实例,并且它本身就是一个完整的搜索引擎。文档存储在分片中,并且在分片中被索引。
当索引创建完成的时候,主分片的数量就固定了(默认为5),复制分片的数量可以随时调整
(需要提前思考创建多少主分片,因为主分片的数量是不变的,文档的大小和复杂度,期望的响应时间,文档数量,文档的属性等,如果数据量可能很大,就需要创建多个分片,从而提高搜索的响应时间)
故障转移:
按照道理来讲,只要节点之间拥有相同的 cluster.name 那么它们就会被自动发现,如果没有,则有可能是 网络广播被禁用,或者防火墙阻止了节点通信
问题一:当主节点(master)挂了,其他节点可以选举为主节点,但是主节点的元数据呢,还是说主节点的元数据也已经在其他节点有备份。