引言

网络上关于Elasticsearch的教程,文章或或者视频太多了,大部分的教程的课程内容也是近亲。课程内容大体上就是:简单介绍、官方下载、windows或linux环境搭建、常用命令、基本的api操作。

但是说实话,这样的课程内容学完了,也就是入门级吧,对Elasticsearch有个大概了解罢了,根本无法实战应用到实际工作中。

早些年有这么一句话:不以结婚为目的的恋爱,都是在耍流氓。应用在技术上了一样:任何大型技术,不以项目为实战的,也是在而流氓!

目的

我写这套文章的目的,努力做全网最全最详细的Elasticsearch技术文档。本套文章内容涵盖了:从基础、环境搭建、原理、常用操作、head插件、Kibana、logstash、springdata基本api操作、springboot基本api操作、Elasticsearch项目之京东商场、Elasticsearch进阶等等。

提前放一张实战项目的截图,仔细看看和京东商城,一模一样的

Elasticsearch掰开揉碎第1篇开门见山_elk


Elasticsearch概述

一、Elasticsearch是什么

Elasticsearch掰开揉碎第1篇开门见山_logstash_02

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掰开揉碎第1篇开门见山_logstash_03

三、其它下载源

如果官方下载速度慢,可以尝试从下面的网站上下载

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掰开揉碎第1篇开门见山_hadoop_04

Elasticsearch环境搭建

工欲善其事,必先利其器。要想学习Elasticsearch,我们要有Elasticsearch的环境啊,下面让我们小试牛刀!

linux下的Elasticsearch单机

1、关闭防火墙和SELinux

[root@hadoop102 ~]# systemctl stop firewalld

[root@hadoop102 ~]# systemctl disable firewalld

Elasticsearch掰开揉碎第1篇开门见山_elk_05

[root@hadoop102 ~]# setenforce 0

Elasticsearch掰开揉碎第1篇开门见山_linux_06

[root@hadoop102 ~]# vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

Elasticsearch掰开揉碎第1篇开门见山_hadoop_07

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

Elasticsearch掰开揉碎第1篇开门见山_logstash_08

(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

Elasticsearch掰开揉碎第1篇开门见山_elk_09

3、上传es安装包到/tmp目录

[root@hadoop102 ~]# ls /tmp/|grep elasticsearch

Elasticsearch掰开揉碎第1篇开门见山_elk_10

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

Elasticsearch掰开揉碎第1篇开门见山_linux_11

注意: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

Elasticsearch掰开揉碎第1篇开门见山_logstash_12

提示:环境变量不符合,当前安装的是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"

Elasticsearch掰开揉碎第1篇开门见山_elasticsearch_13

9、启动es

[es@hadoop102 ~]$ cd /usr/local/elasticsearch/elasticsearch-7.8.0/bin

[es@hadoop102 ~]$ ./elasticsearch 

Elasticsearch掰开揉碎第1篇开门见山_linux_14

提示:当前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

Elasticsearch掰开揉碎第1篇开门见山_elk_15

(2)、在浏览器中输入

http://192.168.8.102:9200

Elasticsearch掰开揉碎第1篇开门见山_linux_16

如果你也看到了,和我一样的测试页面!恭喜恭喜兄弟,你已经拥有了自己的Elasticsearch学习环境了!我觉得你离成功只差一步了,你马上就要成功了,哈哈!

结束语

至此,Elasticsearch掰开揉碎系列的第1篇就结束了。本篇文章中对Elasticsearch进行了简单介绍、官方下载、第3方下载源、linux环境的单机搭建。

本篇文章内容并不多,因为我知道有太多的新手兄弟了,我们要把Elasticsearch的技术掰开揉碎了说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!