目录

1. 集群的相关概念

(1)集群cluster

定义 标识
一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。 一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集 群的名字,来加入这个集群。

(2)节点node

定义 标识 加入集群方式 默认加入集群方式
一个节点是集群中的一个服务器,作为集群的一部分,它存储数据参与集群的索引和搜索功能 一个节点也是由一个名字来标识的默认情况下,这个名字是一个随机的漫威漫画角色的名字,这个名字会在启动的时候赋予节点。 通过配置集群名称的方式来加入一个指定的集群。 每个节点都会被安排加入到一个叫 做“elasticsearch”的集群中。如果你在你的网络中启动了若干个节点,并假定它们能够相互发现彼此, 它们将会自动地形成并加入到一个叫做“elasticsearch”的集群中。

(3)分片和复制shards & replicas

  • 为什么要分片?
    一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间;或者单个节点处理搜索请求,响应太慢

  • 什么是分片?
    为了解决上述问题,Elasticsearch提供了将索引划分成多份的能力,这些份就叫做分片

  • 如何分片?
    创建一个索引的时候,通过指定分片的数量。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。

  • 分片为什么重要?
    1)允许水平分割/扩展内容容量
    2)允许在分片(潜在地,位于多个节点上)之上 进行分布式的、并行的操作,进而提高性能/吞吐量

2. 集群搭建(Windows版)

(1)准备三台elasticsearch服务器

创建elasticsearch-cluster文件夹,在内部复制三个elasticsearch服务
Elasticsearch2/3--高可用集群-LMLPHP

  • 修改每台服务器配置
    修改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
    Elasticsearch2/3--高可用集群-LMLPHP

3. 集群测试

(1)添加索引和映射

Elasticsearch2/3--高可用集群-LMLPHP

  • 源文件
{
    "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)添加文档

Elasticsearch2/3--高可用集群-LMLPHP

{
    "id": 1,
    "title": "ElasticSearch是一个基于Lucene的搜索服务器",
    "content": "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java 开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时 搜索,稳定,可靠,快速,安装使用方便。"
}

(3)使用elasticsearch-header查看集群情况

  • 集群

Elasticsearch2/3--高可用集群-LMLPHP

  • 索引和文档数据
    Elasticsearch2/3--高可用集群-LMLPHP
09-14 09:51