在Linux搭建Elstricsearch心得总结

1.Elasticsearch介绍

1.1简介

https://www.elastic.co/cn/products/enterprise-search这是官网,有文档,有视频,看不懂就用谷歌浏览器自带翻译功能(谷歌打钱!)。我只看过文档,文档版本很扎心,要么是7系列的、要么是很久的版本。
Elasticsearch是一个搜索引擎,基础单位是document(文档)。三维立体式存储、查询需要的资源。现在主流的使用方式是Elasticsearch+mysql,理由嘛,直接查速度太慢,将数据以文档的形式用Elasticsearch查询速度会得到提升。

1.2版本与文档

现在Elasticsearch安装包主要分为三大类,分别为7系列(写该文档时最新版本)、6系列(处于过渡阶段,比较难受)、5系列(旧版本有相应的文档,但是网上资源不太多)。Elasticsearch每代会有一些较大的改变(我觉得)。
目前经过短暂的使用(没错,我安装过6和7系列的),5、6、7的差别大体如下:

  • 结构上,5、6都是index、type、document(索引、类型、文档),这和mysql的database、table、data(库、表、数据)的结构很相似,网上也有大量的文章会这样对比来解释Elasticsearch,方便刚接触的人熟悉。到了7系列后,Elasticsearch改为index、document结构了。
    注意了,这里有个坑!这里有个坑!这里有个坑! 虽然6系列和5系列看起来一样,5系列和MySQL一样,一个index下有多个type,一个type有多个document,type是堆叠的;6系列的index却只能有一个type,对,一个index只有一个type,一个type有复数个document;7系列完全去掉了6系列的type。关于type,可以对你的文档进行分类,使用时注意一下版本就好了。
  • 功能上,一些字段也会发生改变,注意自己的系统与文档版本是否一致。这里简单举一个模糊查询例子。
    从5系列开始,关键字"filtered"被淘汰。
GET _search
{
  "query": {
    "filtered": {
      "query": {
        "match": {
          "text": "quick brown fox"
        }
      },
      "filter": {
        "term": {
          "status": "published"
        }
      }
    }
  }
}

替换后

GET _search
{
  "query": {
    "bool": {
      "must": {
        "match": {
          "text": "quick brown fox"
        }
      },
      "filter": {
        "term": {
          "status": "published"
        }
      }
    }
  }
}

2.需要准备的软件包

2.1JDK安装包

第一个坑,JDK版本建议选择1.8。低于1.8,Elasticsearch会报出JDK版本太低,部分功能无法实现的提示;高于1.8的jdk版本不支持CMS,Elasticsearch启动会提示找不到CMS相关文件。(以上情况基于6系列、7系列)
第二个坑,Linux安装jdk会发现有openjdk版本。如果你安装了,恭喜你中奖了,Elasticsearch不认openjdk,你得去官网重新下载。

2.2Elastricsearch安装包

安装包这边只有一个要注意,就是你所有需要安装Elasticsearch的服务器上的安装包版本必须一致,一个是6.3.0,另一个是6.3.2,安装好的Elasticsearch是不会相互识别到的。

3.安装Elasticsearch需要的环境

3.1JDK环境

1.JDK安装前记得先查看一下系统里的JDK,可能会有预装。
查看自带jdk:rpm -qa|grep gcj,可能会出现下面情况:

libgcj-4.1.2-44.el5
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

使用rpm -e --nodeps libgcj-4.1.2-44.el5删除即可。
2.使用rpm -qa|grep jdk查看

jdk-1.6.0_22-fcs 

使用rpm -e --nodeps jdk-1.6.0_22-fcs删除
3.jdk我是直接下到电脑上远程上传到Linux虚拟机上的,放到你准备好的文件解压即可。
解压命令:

tar -vxf

解压完成后,配置环境变量

vim /etc/profile

回车后,在最下面添加下面语句
记得换成自己的Java路径

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_181
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ 
export PATH=$PATH:$JAVA_HOME/bin

编辑完esc键后输入:wq保存退出,刷新一下:

source /etc/profile

输入java -version,查看Java是否安装成功

3.2防火墙

很多Linux默认状态下防火墙是关闭的,Elasticsearch会在9200到9300自动搜索,所以要提前把相应的端口打开,打开你需要使用的端口即可,没必要全打开。
Centos7

查看防火墙状态
查看防火墙状态 systemctl status firewalld
开启防火墙 systemctl start firewalld  
关闭防火墙 systemctl stop firewalld
开启防火墙 service firewalld start 
若遇到无法开启
先用:systemctl unmask firewalld.service 
然后:systemctl start firewalld.service
----------------------------------------------------------------------
查看对外开放的端口状态
查询已开放的端口 netstat -anp
查询指定端口是否已开 firewall-cmd --query-port=666/tcp
提示 yes,表示开启;no表示未开启。

windows使用telnet 192.168.xxx.xxx 端口号检测是否成功,地址和端口号之间有空格。

4.安装Elasticsearch

4.1在单台服务器上搭建多个节点

在Linux,root权限下输入(保险一点)

wget https://artifacts.elastic.co/downloads/elastricsearch/elasticsearch-6.3.2.tar.gz

解压:

tar -vxf elasticsearch-6.3.2.tar.gz

到解压后的elasticsearch文件目录下进入到config文件夹,vim elasticsearch.yml,进入到你的配置文件里
在这里插入图片描述
cluster.name是集群的名字,elasticsearch会根据名称去寻找相同的节点。我这的名字多加了一个r。
node.name是节点的名称,如果自己没有填写,elasticsearch会自动为每个节点取一个名称。
node.data:true可以存储数据,false不可。
在这里插入图片描述
network.host:填写你的服地址
http.port:填写你可被外部访问到的端口号
transport.tcp.port:填写你的节点之间内部通信的端口号
discovery.zen.ping.unicast.hosts:依次填写"服务器地址:端口",第一个一般为主节点。各节点配置文件里地址顺序须一样。
http.cors.enabled:http.cors.enabled为true,可跨域访问,其余照着搞就完事了。
主节点与一般节点配置文件的区别:
主节点配置文件中需要添加node.master:true
一般节点配置为false(false就无法成为主节点,慎用)
注意:

  • 如果是同一台服务器,注意两个节点的通讯端口(http.port和transport.tcp.port)要不一样!
  • 一台服务器搭建的时候,端口不通的错误不易被发现,建议远程测试一下。
  • 如果条件允许,建议不要只使用一台服务器搭建多节点,如果服务器down了,数据就会存在丢失,影响整个系统;使用多台服务器搭建,elasticsearch创建index可以使用副分片存储备份数据同时查询时也会提高响应速度。
  • 如果你的node.master:true,两个端口号都要保证是可以访问的。因为true,代表这个节点可以参与选举,即有机会成为主节点。

4.2在多台服务器上搭建多个节点

多台服务器搭建与一台服务器多节点搭建大致相同,不同点主要是elasticsearch.yml。这里说一下不同点:

  • 端口号,两个端口号(http.port和transport.tcp.port)不用考虑冲突的问题,因为服务器之间的地址是不一样的。
  • 记得别把服务器地址搞错了。
  • 如果你的node.master:true,两个端口号都要保证是可以访问的。因为true,代表这个节点可以参与选举,即有机会成为主节点。

4.3启动

配置好后,此时应该还是root权限,建立一个用户组,在该用户组创建用户。给该用户授予elasticsearch的权限,因为root是无法启动的,对,会报错(Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.)。

#创建新用户
adduser es
#设置密码
passwd es
#后面会让输入两次密码
#文件夹归属组
 #chown -R [用户]:[所属组] 目录(建议使用全路径地址)
 chown -R es:es elasticsearch-6.3.2/

注意:
这里赋权,建议使用chown -R,不要使用chown
赋权完成后,使用su es(es是我们上面创建的用户)切换到我们创建的用户权限下,在bin目录使用sh elasticsearch启动。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值