目录
1. 集群的相关概念
(1)集群cluster
定义 | 标识 |
---|---|
一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。 | 一个集群由一个唯一的名字标识 ,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集 群的名字,来加入这个集群。 |
(2)节点node
定义 | 标识 | 加入集群方式 | 默认加入集群方式 |
---|---|---|---|
一个节点是集群中的一个服务器,作为集群的一部分,它存储数据 ,参与集群的索引和搜索功能 。 | 一个节点也是由一个名字来标识 的默认情况下,这个名字是一个随机的漫威漫画角色的名字,这个名字会在启动的时候赋予节点。 | 通过配置集群名称 的方式来加入一个指定的集群。 | 每个节点都会被安排加入到一个叫 做“elasticsearch”的集群中。如果你在你的网络中启动了若干个节点,并假定它们能够相互发现彼此, 它们将会自动地形成并加入到一个叫做“elasticsearch”的集群 中。 |
(3)分片和复制shards & replicas
-
为什么要分片?
一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间
;或者单个节点处理搜索请求,响应太慢
。 -
什么是分片?
为了解决上述问题,Elasticsearch提供了将索引划分成多份
的能力,这些份就叫做分片。 -
如何分片?
创建一个索引的时候,通过指定分片的数量
。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。 -
分片为什么重要?
1)允许水平分割/扩展内容容量
。
2)允许在分片(潜在地,位于多个节点上)之上 进行分布式的、并行的操作,进而提高性能/吞吐量
。
2. 集群搭建(Windows版)
(1)准备三台elasticsearch服务器
创建elasticsearch-cluster文件夹,在内部复制三个elasticsearch服务
- 修改每台服务器配置
修改config目录下elasticsearch.yml
配置文件
node1节点:(node2节点、node3节点,可参考下面配置中的注释)
#节点1的配置信息:
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样(node2:node-2)
node.name: node-1
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器下必须不一样(node2:9202)
http.port: 9201
#集群间通信端口号,在同一机器下必须不一样(node2:9202)
http.port: 9201
transport.tcp.port: 9301
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
(2)启动各个节点服务器
- 双击bin目录下
elasticsearch.bat
3. 集群测试
(1)添加索引和映射
- 源文件
{
"mappings": {
"article": {
"properties": {
"id": {
"type": "long",
"store": true,
"index": "not_analyzed"
},
"title": {
"type": "text",
"store": true,
"index": "analyzed",
"analyzer": "standard"
},
"content": {
"type": "text",
"store": true,
"index": "analyzed",
"analyzer": "standard"
}
}
}
}
}
(2)添加文档
{
"id": 1,
"title": "ElasticSearch是一个基于Lucene的搜索服务器",
"content": "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java 开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时 搜索,稳定,可靠,快速,安装使用方便。"
}
(3)使用elasticsearch-header查看集群情况
- 集群
- 索引和文档数据