elasticsearch在centos上的学习过程1

一、elasticsearch介绍

elasticsearch是一个开源的分布式搜索引擎,其提供了简易的Restful API,可以轻松的横向扩展(通过加机器即节点来解决存储容量不足的问题)。

优点:

1、海量的数据分析引擎

2、站内搜索引擎
3、可作数据仓库

二、elasticsearch安装

为了结合elasticsearch插件的版本问题,elasticsearch的版本从2.x直接升级到了5.x,最新版本为5.6.0。

这里使用elasticsearch 5.x 的版本,因为5.x之后的版本性能有很大提升,如:查询速度加快、硬盘占用下降、内存使用下降。

下载安装步骤如下:

(1)进入官网(地址:www.elastic.co),点击右上角downloads

elasticsearch在centos上的学习过程1


(2)拖动到下面找到该图标点击Download

elasticsearch在centos上的学习过程1


(3)选择下载tar包

elasticsearch在centos上的学习过程1

(4)到对应目录找到下载的 elasticsearch-5.6.0.tar.gz

          执行如下操作解压并进入目录

          tar zxvf elasticsearch-5.6.0.tar.gz
          cd elasticsearch-5.6.0

(5)执行命令,启动elasticsearch :   ./bin/elasticsearch

          在浏览器*问localhost:9200(默认端口为9200),看到如下页面表示安装成功

elasticsearch在centos上的学习过程1

三、安装elasticsearch-head插件

elasticsearch-head为elasticsearch提供了友好的操作界面,可以进行数据检索

(1)进入github,搜索elasticsearch-head,并选择mobz/elasticsearch-head这个项目


elasticsearch在centos上的学习过程1

(2)点击Clone or download ,下载该项目的zip包(elasticsearch-head-master.zip)

elasticsearch在centos上的学习过程1


(3)需要安装npm命令 : yum install npm
           然后通过 node -v  命令查看版本,需要 >= 6.0

           这里我的版本为 6.11.1 满足条件

elasticsearch在centos上的学习过程1

(4)解压zip包    unzip  elasticsearch-head-master.zip    

          通过   npm run start   命令启动head服务,默认端口为9100

          在浏览器访问如下地址查看启动情况
          这里还未与elasticsearch关联,所以显示未连接

elasticsearch在centos上的学习过程1

四、elasticsearch-head与elasticsearch结合,并构建分布式集群环境

(1)要想elastcisearch-head能够连接访问到对应的elastcisearch
      需要修改 elasticsearch-5.6.0/config/elastcisearch.yml这个配置文件
      在该文件最后加(注意空格)
        http.cors.enabled:  true
        http.cors.allow-origin:  "*"

        如下:

elasticsearch在centos上的学习过程1

(2)通过-d配置使elasticsearch在后台执行 elasticsearch-5.6.0/bin/elasticsearch -d

此时访问elasticsearch-head的时候可以看到green:表示正常连接。
若为yellow:健康但不是很好;red:不健康,不可用

elasticsearch在centos上的学习过程1


(3)分布式集群构建
这里我创建三个节点的集群,其中一个master节点(老大),以及两个slave节点(小弟)

因为这里三个节点我都部在同一个机器上,所以需要拷贝三份elasticsearch目录,分别命名为elasticsearch1、elasticsearch2、elasticsearch3,且ip都为127.0.0.1
a、master节点,需要在elasticsearch1/config/elasticsearch.yml文件最后添加如下内容
http.cors.enabled: true
http.cors.allow-origin: "*"

cluster.name: cloud       -- 集群的名字
node.name: themaster       -- 该节点名字
node.master: true          -- 是否为master节点
network.host: 127.0.0.1     -- 绑定ip,默认端口为9200

elasticsearch在centos上的学习过程1

b、slave1节点,需要在elasticsearch2/config/elasticsearch.yml文件最后添加如下内容

http.cors.enabled: true
http.cors.allow-origin: "*"

cluster.name: cloud             -- 必须同上
node.name: thesalve1
network.host: 127.0.0.1

http.port: 9201                       --  因为在同一台机器布,所以端口不能冲突,设置为9201
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]             -- 集群master的ip

elasticsearch在centos上的学习过程1

c、slave2节点,需要在elasticsearch3/config/elasticsearch.yml文件最后添加内容除了节点名,其他同上。

注意:如果启动的时候报如下错:

failed to send join request to master [{themaster}{dDZhqzZxQAaRQYwSv7HceA}{M3KuhdgwSMadpMe-3Q3NYw}{127.0.0.1}{127.0.0.1:9300}], reason [RemoteTransportException[[themaster][127.0.0.1:9300][internal:discovery/zen/join]]; nested: IllegalArgumentException[can't add node {thesalve2}{dDZhqzZxQAaRQYwSv7HceA}{xkqcn_k3RXWYZQ9r4dlbOA}{127.0.0.1}{127.0.0.1:9301}, found existing node {themaster}{dDZhqzZxQAaRQYwSv7HceA}{M3KuhdgwSMadpMe-3Q3NYw}{127.0.0.1}{127.0.0.1:9300} with the same id but is a different node instance];

因为在复制目录的时候把别的elasticsearch目录含有的data拷贝过来了,删除elasticsearch目录下的data文件即可启动。


启动完三个节点之后,在elasticsearch-head上可以看到有三个节点,如图
其中第一个左边带星的为master节点,另外两个为slave

elasticsearch在centos上的学习过程1