一. Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎。设计用于云计算中,可以达到实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口java
二. ES中的核心概念node
- 集群(Cluster): ES是一个分布式的搜索引擎,通常由多台物理机组成。这些物理机,经过配置一个相同的cluster name,互相发现,把本身组织成一个集群。
- 节点(Node):同一个集群中的一个Elasticearch主机。
- 主分片(Primary shard):索引(下文介绍)的一个物理子集。同一个索引在物理上能够切多个分片,分布到不一样的节点上。分片的实现是Lucene 中的索引。
- 注意:ES中一个索引的分片个数是创建索引时就要指定的,创建后不可再改变。因此开始建一个索引时,就要预计数据规模,将分片的个数分配在一个合理的范围。
- 副本分片(Replica shard):每一个主分片能够有一个或者多个副本,个数是用户本身配置的。ES会尽可能将同一索引的不一样分片分布到不一样的节点上,提升容错性。对一个索引,只要不是全部shards所在的机器都挂了,就还能用。
- 索引(Index):逻辑概念,一个可检索的文档对象的集合。相似与DB中的database概念。同一个集群中可创建多个索引。好比,生产环境常见的一种方法,对每月产生的数据建索引,以保证单个索引的量级可控。
- 类型(Type):索引的下一级概念,大概至关于数据库中的table。同一个索引里能够包含多个 Type。
- 文档(Document):即搜索引擎中的文档概念,也是ES中一个能够被检索的基本单位,至关于数据库中的row,一条记录。
- 字段(Field):至关于数据库中的column。ES中,每一个文档,实际上是以json形式存储的。而一个文档能够被视为多个字段的集合。好比一篇文章,可能包括了主题、摘要、正文、做者、时间等信息,每一个信息都是一个字段,最后被整合成一个json串,落地到磁盘。
- 映射(Mapping):至关于数据库中的schema,用来约束字段的类型,不过 Elasticsearch 的 mapping 能够不显示地指定、自动根据文档数据建立。
- Elasticsearch集群能够包含多个索引(indices),每个索引能够包含多个类型(types),每个类型包含多个文档(documents),而后每一个文档包含多个字段(Fields),这种面向文档型的储存,也算是NoSQL的一种吧。
- ES比传统关系型数据库,对一些概念上的理解:
- Relational DB -> Databases -> Tables -> Rows -> Columns
- Elasticsearch -> Indices -> Types -> Documents -> Fields
三 .Elasticsearch 的安装及配置git
配置文件elasticsearch.yml 集群名和节点名: #cluster.name: elasticsearch #node.name: "node1" 是否参与master选举和是否存储数据 #node.master: true #node.data: true 分片数和副本数 #index.number_of_shards: 5 #index.number_of_replicas: 1github
master选举最少的节点数,这个必定要设置为整个集群节点个数的一半加1,即N/2+1web
#discovery.zen.minimum_master_nodes: 1数据库
discovery ping的超时时间,拥塞网络,网络状态不佳的状况下设置高一点json
#discovery.zen.ping.timeout: 3s网络
注意,分布式系统整个集群节点个数N要为奇数个!!app
如何避免ElasticSearch发生脑裂(brain split):http://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem-in-elasticsearch/elasticsearch
即便集群节点个数为奇数,minimum_master_nodes为整个集群节点个数一半加1,也难以免脑裂的发生,详情看讨论:https://github.com/elastic/elasticsearch/issues/2488
四. ElasticSearch之初体验
在正式使用以前,最好安装个web图形界面的插件,咱们使用比较流行的head插件,安装步骤以下: /elasticsearch-1.7.1/bin/plugin -install mobz/elasticsearch-head ,安装完毕后的页面显示以下:

经过图形界面能够查看集群信息,索引信息,索引状态,检索数据等操做。大概有个印象,后面介绍下大概用法,及JavaApi如何使用