集群,一个ES集群由一个或多个节点(Node)组成,每一个集群都有一个cluster name做为标识。一下是咱们的4节点集群。html
节点,一个ES实例就是一个node,一个机器能够有多个实例,因此并不能说一台机器就是一个node,大多数状况下每一个node运行在一个独立的环境或虚拟机上。node
索引,即一系列documents的集合。git
一个拥有两个主分片一份副本的索引能够在四个节点中横向扩展。github
分片是什么?sql
简单来说就是我们在ES中全部数据的文件块,也是数据的最小单元块,整个ES集群的核心就是对全部分片的分布、索引、负载、路由等达到惊人的速度。 数据库
实列场景:架构
假设 IndexA 有2个分片,咱们向 IndexA 中插入10条数据 (10个文档),那么这10条数据会尽量平均的分为5条存储在第一个分片,剩下的5条会存储在另外一个分片中。app
和主流关系型数据库的表分区的概念有点相似,若是你比较熟悉关系型数据库的话。yii
建立 IndexName 索引时候,在 Mapping 中能够以下设置分片 (curl)curl
PUT indexName
{
"settings": { "number_of_shards": 5 } }
Elastic 官方文档建议:一个 Node 最好不要多于三个 shards。注意 索引创建后,分片个数是不能够更改的。
在进行历史数据入库的时候,建议先在settings中将备份设为0,refresh关闭来提高索引效率,数据入库完毕可恢复须要值。
"settings": {
"number_of_shards": 5, "number_of_replicas": 0, "refresh_interval": -1 }
分片好处
1.分片,ES是分布式搜索引擎,每一个索引有一个或多个分片,索引的数据被分配到各个分片上,至关于一桶水用了N个杯子装
2.分片有助于横向扩展,N个分片会被尽量平均地(rebalance)分配在不一样的节点上(例如你有2个节点,4个主分片(不考虑备份),那么每一个节点会分到2个分片,后来你增长了2个节点,那么你这4个节点上都会有1个分片,这个过程叫relocation,ES感知后自动完成)
3.分片是独立的,对于一个Search Request的行为,每一个分片都会执行这个Request.
4.每一个分片都是一个Lucene Index,因此一个分片只能存放 Integer.MAX_VALUE - 128 = 2,147,483,519 个docs。
分片个数
建议:(仅参考)
一、每个分片数据文件小于30GB
二、每个索引中的一个分片对应一个节点
三、节点数大于等于分片数
1.复制,能够理解为备份分片,相应地有primary shard(主分片)
2.主分片和备分片不会出如今同一个节点上(防止单点故障),默认状况下一个索引建立5个分片一个备份(即5primary+5replica=10个分片)
3.若是你只有一个节点,那么5个replica都没法分配(unassigned),此时cluster status会变成Yellow。
经过调整副本数来均衡节点负载
事实上节点 3 持有两个副本分片,然而没有主分片并不重要。副本分片与主分片作着相同的工做;它们只是扮演着略微不一样的角色。没有必要确保主分片均匀地分布在全部节点中。
从这个图我发现两个Node节点 ,5个shard分片,1个replica备份,没毛病啊,每一个节点就是有完整的信息:
ok,这里是3个node,3个shard,1份replica,发现了吗,这边的话每一个节点并无完整的数据,可是任意两个节点有完整的数据即便一台机器宕机,剩下两个节点依然能够提供完整的数据,依然知足高可用。
结论
发现规律了吗?其实很简单 若是每一个机器上要有完整的数据 ,须要知足 分片数*节点数的总分片数量,固然,这里的总分片数量包含了 主分片和副本分片。所以,咱们得出一个公式:副本数replica =(shardNum*nodeNum-shardNum)/shardNum。当replica大于此值时,知足要求。
https://www.elastic.co/guide/cn/elasticsearch/guide/current/_analytics.html
https://www.cnblogs.com/52fhy/p/9826356.html
https://blog.csdn.net/yzhujue/article/details/53128813?utm_source=blogxgwz0
http://www.lanrenkaifa.com/post/57
IK分词
https://github.com/medcl/elasticsearch-analysis-ik/releases
ELK下载地址
https://www.elastic.co/cn/downloads/past-releases
https://www.yiibai.com/elasticsearch/elasticsearch-getting-start.html