Linux搭建Elasticsearch5版本以及常见问题的解决
1. 什么是Elasticsearch?
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
2. 为什么要使用Elasticsearch?
个人理解:由于我们在项目中会有遇到这样大数据量的问题,比如我们需要在一张表或者多张表进行查询,而数据量又特别大,比如我们可能遇到这样的需求:要从50w数据中分组又要按照许多where条件进行查询数据,我们知道如果有like查询,又是两边模糊查询的(select * from user where name like ‘%你%’;),这样是会使索引失效,即便是有索引,数据量太大也会严重影响我们的查询速度,如果我们使用搜索引擎的话,就会大大的提高查询的速度,会极快将我们的查询结果响应回来。
3. Elasticsearch安装
3.1 安装环境
首先安装es需要java环境,因此我们来先安装java,很容易,一句命令
yum install java-1.8.0-open*
3.2 下载Elasticsearch
首先我们要Elasticsearch的官网进行下载Elasticsearch
https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-8
在这个下载页面点击我们需要下载的包,由于我们是在linux上安装Elasticsearch,所以我们下载Elasticsearch的tar包;
3.3 安装Elasticsearch
首先我们在linux下创建一个目录,专门放置我们准备安装的Elasticsearch;
- 这里需要注意! 由于我们启动es不能用root,而我们又需要做很多操作,所以我们解压安装这些操作请自行切换到root,以免出现不必要的麻烦!切换用户的命令是 su 用户名
[root@localhost ~]# cd /
[root@localhost /]# mkdir /data/elasticsearch
[root@localhost /]# cd /data/elasticsearch/
将我们下载的tar包放在我们新建的目录下,并解压我们的tar包
[root@localhost elasticsearch]# tar -zxvf elasticsearch-5.6.8.tar.gz
然后我们需要创建一个用户,这里请注意,由于Elasticsearch的自身安全,Elasticsearch是不允许使用root账号来启动的,需要我们创建一个用户,并赋予当前Elasticsearch文件夹的权限;
[root@VM_0_8_centos elasticsearch]# useradd shaochen
[root@VM_0_8_centos elasticsearch]# chown -R shaochen:shaochen /data/elasticsearch/elasticsearch-5.6.8
启动Elasticsearch
[root@localhost elasticsearch]# su shaochen
[shaochen@localhost elasticsearch]$ cd elasticsearch-5.6.8/
[shaochen@localhost elasticsearch-5.6.8]$ cd bin/
[shaochen@localhost bin]$ ./elasticsearch
当出现下面图片中的代码串,就说明我们启动成功了!
- 我们再开一个窗口来确认是否启动成功!注意:不要把这个窗口关闭!
[root@localhost /]$ curl localhost:9200
当出现了这样的界面,说明我们已经启动成功了
3.4 配置Elasticsearch
首先我们要配置elasticsearch可以远程访问
首先我们回到之前启动的es窗口,并停止这个es
[shaochen@localhost bin]$ cd ../config/
接下来我们要编辑一下elasticsearch.yml文件
[shaochen@localhost bin]$ vim elasticsearch.yml
修改后我们就可以在浏览器上直接访问了,如果访问不了,先检查一下端口开没开放把!
3.5 安装ik分词器
为什么要安装ik分词器?
大家都知道,es这东西是一个搜索引擎,还是老外做的东西,这里面有很多分词的机制,但都是对于中文的分词,所以一般我们要使用es或者solr这样的搜索引擎的话,我们都要配置一个分词器插件来进行中文分词,所以我们需要配置一个ik分词器,因为这个分词器,对中文的分词很好!
下载ik分词器
ik分词器的下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases
我们必须要根据我们es的版本对应下载ik分词器的版本,这里一定要注意!
[shaochen@localhost bin]$ cd /data/elasticsearch/elasticsearch-5.6.8/plugins/
将我们下载好的zip包,放到我们刚才进入的目录之中
然后我们要安装一个可以解压zip的命令
[shaochen@localhost bin]$ su root
[root@localhost plugins]# yum install -y unzip
[root@localhost plugins]# unzip elasticsearch-analysis-ik-5.6.8.zip
然后我们把解压的包修改一下名字,修改为ik
然后我们需要删除我们的zip压缩包,然后再重新启动一下
[root@localhost plugins]# rm elasticsearch-analysis-ik-5.6.8.zip
[root@localhost plugins]# su shaochen
[shaochen@localhost plugins]$ cd ../bin/
[shaochen@localhost plugins]$ ./elasticsearch
当出现图中标记的插件后,就说明我们的ik分词器已经安装成功了,然后我们重新启动! 这次我们加一个参数,这样可以让我们在后台启动!就可以做其他操作了!
[shaochen@localhost bin]$ ./elasticsearch -d
好了! 这样我们就安装好了es,我们就可以使用谷歌的插件直接使用es了!
3.6 启动报错解决方案
1.max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
vim /etc/security/limits.conf
在最后面追加下面内容
*** hard nofile 65536
*** soft nofile 65536
*** 是启动ES的用户
2.max number of threads [1024] for user [shaochen] is too low, increase to at least [2048]
vim /etc/security/limits.d/90-nproc.conf
将1024改为2048
3.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vim /etc/sysctl.conf
添加如下配置
vm.max_map_count=655360
保存后执行下面命令
sysctl -p
4.system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
修改es目录中的congfig下的elasticsearch.yml文件,添加下面的配置信息
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
3.7 端口如果未开放,请向下看
具体要看你开放哪个端口了!这个可以配置的
开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
保存:/etc/rc.d/init.d/iptables save
重启服务:/etc/init.d/iptables restart
查看端口是否开放:/sbin/iptables -L -n
好了,就写到这里了!希望对大家有帮助把