引言
网络上关于Elasticsearch的教程,文章或或者视频太多了,大部分的教程的课程内容也是近亲。课程内容大体上就是:简单介绍、官方下载、windows或linux环境搭建、常用命令、基本的api操作。
但是说实话,这样的课程内容学完了,也就是入门级吧,对Elasticsearch有个大概了解罢了,根本无法实战应用到实际工作中。
早些年有这么一句话:不以结婚为目的的恋爱,都是在耍流氓。应用在技术上了一样:任何大型技术,不以项目为实战的,也是在而流氓!
目的
我写这套文章的目的,努力做全网最全最详细的Elasticsearch技术文档。本套文章内容涵盖了:从基础、环境搭建、原理、常用操作、head插件、Kibana、logstash、springdata基本api操作、springboot基本api操作、Elasticsearch项目之京东商场、Elasticsearch进阶等等。
提前放一张实战项目的截图,仔细看看和京东商城,一模一样的
Elasticsearch概述
一、Elasticsearch是什么
The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack))能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB 级别的数据。
二、官方及下载地址
Elasticsearch官方地址:https://www.elastic.co/cn/
Elasticsearch下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
搜索指定版本,如下图所示:
三、其它下载源
如果官方下载速度慢,可以尝试从下面的网站上下载
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
Logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D
elasticsearch-analysis-ik: https://github.com/medcl/elasticsearch-analysis-ik/releases
cerebro: https://github.com/lmenezes/cerebro/releases
四、平台分类
Elasticsearch是区分操作系统平台的,根据自己的需要下载对应的版本,如图标识出常用的linux和windows版本。
Elasticsearch环境搭建
工欲善其事,必先利其器。要想学习Elasticsearch,我们要有Elasticsearch的环境啊,下面让我们小试牛刀!
linux下的Elasticsearch单机
1、关闭防火墙和SELinux
[root@hadoop102 ~]# systemctl stop firewalld
[root@hadoop102 ~]# systemctl disable firewalld
[root@hadoop102 ~]# setenforce 0
[root@hadoop102 ~]# vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
2、安装JDK
(1)、卸载现有JDK
[root@hadoop102]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
(2)、将JDK上传到/opt/software文件夹
[root@hadoop102 ~]# mkdir -p /opt/software/ /opt/module/
[root@hadoop102 ~]# chmod 777 -R /opt
(3)、解压JDK到/opt/module目录下
[root@hadoop102]# tar -zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/
(4)、配置环境变量
[root@hadoop102 ~]# vi /etc/profile #追加
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
(5)、让环境变量生效
[root@hadoop102 ~]# source /etc/profile
(6)、测试JDK是否安装成功
[root@hadoop102 ]# java -version
3、上传es安装包到/tmp目录
[root@hadoop102 ~]# ls /tmp/|grep elasticsearch
4、创建es安装的目录
[root@hadoop102 ~]# mkdir -p /usr/local/elasticsearch
5、创建普通用户安装es软件
[root@hadoop102 ~]# groupadd es
[root@hadoop102 ~]# useradd es -g es
[root@hadoop102 ~]# chown -Rf es:es /usr/local/elasticsearch/
[root@hadoop102 ~]# su - es
注意:es不允许root用户操作,只能是非root用户操作。
6、解压es软件到指定目录
[es@hadoop102 ~]$ tar zxvf /tmp/elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/local/elasticsearch
7、启动es
[es@hadoop102 ~]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/bin
[es@hadoop102 bin]# ./elasticsearch
提示:环境变量不符合,当前安装的是jdk8版本,es需要的是jdk11。
8、指定es使用jdk
es软件自带的jdk路径:/usr/local/elasticsearch/elasticsearch-7.8.0/jdk
根据自己安装的路径修改,我把es安装到/usr/local/elasticsearch/目录
[es@hadoop102 ~]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/bin
[es@hadoop102 ~]$ vi elasticsearch-env
在 set -e -o pipefail 下面加入
JAVA_HOME="/usr/local/elasticsearch/elasticsearch-7.8.0/jdk"
9、启动es
[es@hadoop102 ~]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/bin
[es@hadoop102 ~]$ ./elasticsearch
提示:当前es用户的资源限制需要修改。还 es的配置文件中缺少配置,[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]这3个参数,至少配置1个。
10、修改资源限制和es配置
(1)、root用户操作
[root@hadoop102 ~]# vi /etc/security/limits.conf 最后追加如下
* hard nofile 65536
* soft nofile 131072
* hard nproc 4096
* soft nproc 2048
说明:
nofile :任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接
nproc:任何用户可以打开的最大进程数
(2)、root用户操作
[root@hadoop102 ~]# vi /etc/sysctl.conf 最后追加如下
vm.max_map_count=655360
fs.file-max=655360
说明:
max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量
fs.file-max:系统级打开最大文件句柄的数量
让上面的修改配置生效,执行如下命令
[root@hadoop102 ~]# sysctl -p
(3)、es用户操作
[es@hadoop102 ]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/config
[es@hadoop102 config]$ vi elasticsearch.yml 最后追加如下
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.8.102"]
cluster.initial_master_nodes: ["192.168.8.102"]
配置说明:
network.host: 0.0.0.0【任何IP都能访问】
http.port: 9200【开放端口9200】
discovery.seed_hosts: ["192.168.8.102"]【集群发现配置,本机IP】
cluster.initial_master_nodes: ["192.168.8.102"]【集群的初始化主节点,本机IP】
此处有一个坑,后缀是yml的文件,它里面每一行的配置中,:后面要有1个空格。可以用图标识出来。
11、启动es
[es@hadoop102 ~]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/bin
[es@hadoop102 ~]$ ./elasticsearch
12、访问测试
(1)、新开一个命令窗口输入
[es@hadoop102 ~]$ curl http://127.0.0.1:9200
(2)、在浏览器中输入
http://192.168.8.102:9200
如果你也看到了,和我一样的测试页面!恭喜恭喜兄弟,你已经拥有了自己的Elasticsearch学习环境了!我觉得你离成功只差一步了,你马上就要成功了,哈哈!
结束语
至此,Elasticsearch掰开揉碎系列的第1篇就结束了。本篇文章中对Elasticsearch进行了简单介绍、官方下载、第3方下载源、linux环境的单机搭建。
本篇文章内容并不多,因为我知道有太多的新手兄弟了,我们要把Elasticsearch的技术掰开揉碎了说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!