由于本站点的搜索功能需要可以搜索博主、标签、博文标题、博文内容,然而博文内容的检索不可能用单纯的数据库like,这个不科学,因为可能一篇博文字数几万,这种效率太低,但是想要效率高就必须耗费相应的空间,毕竟二者不可兼得。这里选用的是elasticsearch6,当然我的阿里云服务器内存太小,不够用,但是先研究,以后有钱了换个大内存就好啦。我们开始第一步安装环境吧!
一、安装环境所需包下载
1、jdk环境
ES的运行环境需要jdk1.8的环境支持,这个可以去jdk官网下载,这里的版本是jdk-8u191-linux-x64.tar.gz,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2、elasticsearch
还需要下载elasticsearch,也是去官网下载,这里下载的版本是elasticsearch-6.5.4.tar.gz,下载地址:https://www.elastic.co/cn/downloads/elasticsearch
3、Kibana
还需要下载开源的分析和可视化平台Kibana,也是去官网下载,这里下载的版本是kibana-6.5.4-linux-x86_64.tar.gz,下载地址:https://www.elastic.co/cn/downloads/kibana
二、配置jdk和elasticsearch环境
1、配置jdk环境
将jdk-8u191-linux-x64.tar.gz加入到服务器的/usr/local/目录下,执行命令如下命令
1.1、解压
tar -zxvf jdk-8u191-linux-x64.tar.gz
1.2、重命名
mv jdk1.8.0_191/ jdk
1.3、在文件/etc/profile最后加入
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
1.4、重新加载配置文件
source /etc/profile
2、elasticsearch环境配置
解压重命名即可
tar -zxvf elasticsearch-6.5.4.tar.gz
mv elasticsearch-6.5.4 elasticsearch
三、启动elasticsearch
进入elasticsearch,执行启动命令 ./bin/elasticsearch,此时可能会报有如下错误
错误1
这个错误很明显,表明不能用root账户启动,只需要建一个新账户,授予目录权限然后切换账户启动即可
groudadd es
useradd es -g es -p forever
chown -R es:es /usr/local/elasticsearch
然后切换账户
su es
再执行重启
./bin/elasticsearch
错误2
此时可能报如下错误
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因:最大虚拟内存太小
解决方案:切换到root用户下,修改配置文件sysctl.conf
vi /etc/sysctl.conf
在最后一行加入
vm.max_map_count=655360
保存后执行如下命令
sysctl -p
再执行重启
错误3
max number of threads [1024] for user [es] is too low, increase to at least [4096]
原因:无法创建本地线程问题,用户最大可创建线程数太小
解决方案:切换到root用户,进入limits.d目录下,修改90-nproc.conf 配置文件。
vi /etc/security/limits.d/90-nproc.conf
找到如下内容:
* soft nproc 1024
修改为
* soft nproc 4096
用户重新登录,后再启动
错误4
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
原因:无法创建本地文件问题,用户最大可创建文件数太小
解决方案:切换到root用户,编辑limits.conf配置文件:
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
备注:* 代表Linux所有用户名称(比如 hadoop)
保存、退出、重新登录才可生效
再启动
错误五
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
原因:这是在因为Centos6不支持SecComp,而ES6.5.4默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
解决:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.system_call_filter: false
保存重启es,这次终于不会报错了
启动的时候可能会遇到如上错误,但是也可能不会遇到,反正我这次就是五个都遇全了,运气真好。启动成功啦,接下来开始测试。
四、测试
新开一个窗口,访问curl localhost:9200,返回
表明环境搭建成功
若是需要本机也可以访问,则需要修改配置文件elasticsearch.yml
#这里表示所有都可以访问,但是生产上不可以这样指定,需要指定固定的ip或者注释掉,只让本机访问
network.host: 0.0.0.0
#其实这个默认是9200
http.port: 9200
再启动,然后发现还是不能访问,那当然只有一个原因啦,防火墙在CentOS6版本是用iptables的,二CentOS7是用firewalld,这里只是用于测试,并且是CentOS6,那么直接关闭即可service iptables stop,然后再次访问,如下图访问成功。
五、可视化平台Kibana的安装
Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。你可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。
1、 上面已经下载好了kibana-6.5.4-linux-x86_64.tar.gz
tar -zxvf kibana-6.5.4-linux-x86_64.tar.gz
mv kibana-6.5.4-linux-x86_64 kibana
2、 修改配置
vi config/kibana.yml
将默认配置改成如下:
#这个端口其实默认就应该是5601
server.port: 5601
#默认是localhost只能本机访问,记得改为对应的linux ip
server.host: "192.168.144.3"
3、 启动
在bin下执行如下命令
./kibana
4、 启动后浏览器访问会出现如下界面,就表明成功http://192.168.144.3:5601
5、 感觉就相当于navicat操作数据库的工具
myes表示索引对应数据库,user表示类型对应表,1表示文档对应行,name表示字段对应列。
六、Elasticsearch存储结构
到这里就把环境都搭建好啦,简单说一下存储结构
Elasticsearch是文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:
{
“name” : “林文华”,
“sex” : 0
}
关系数据库 ⇒ 数据库(database)⇒ 表(table) ⇒ 行(line) ⇒ 列(Columns)
Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields)
七、应用场景
1、大型分布式日志分析系统ELK elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据)
2、大型电商商品搜索系统、网盘搜索引擎等。
结语
上面就是Linux安装elasticsearch+kibana运行环境的所有步骤啦,亲测有效,不过应用场景都是大型大型的,我的博客平台这么小,都不知道该不该用,接下来会写一篇springboot整合elasticsearch的博文,简单的使用一下。