当前位置: 代码迷 >> 综合 >> Elastic Stack核心技术实战01--Elasticsearch环境搭建与基础入门
  详细解决方案

Elastic Stack核心技术实战01--Elasticsearch环境搭建与基础入门

热度:30   发布时间:2023-12-25 18:51:50.0

       相信大家对于ELK并不陌生吧,大家在工作中一定都接触过Elasticsearch这个搜索引擎,ELK技术栈就是Elasticsearch和Logstash以及Kibana三个组件共同组成的,但是随着后来又有新组件Beats的加入,于是就形成了Elastic Stack。因此作为一个优秀的程序开发者,我们现在在和别人聊技术的时候不应该再说ELK了(过时了),而是称之为Elastic Stack。关于两者的区别,如下图所示:

 

        好了,今天就给大家介绍一下第一个组件Elasticsearch的环境搭建以及他的基础的语法。首先我们准备好一台干净的虚拟机。

由于Elasticsearch是基于Java语言开发的一个搜索引擎,因此再运行的时候需要依赖Java的环境,因此我们首先需要安装Java的环境再来搭建Elasticsearch的环境。接下来我们开始实操。

首先准备好安装包,如下图所示:

     同时我们创建一个目录es,作为es的安装目录。这里说明一下我的操作系统版本信息如下所示:

     首先解压jdk的安装包,可以根据自己的习惯选择解压路径,这里我习惯放在/usr/local/java/下。接着需要修改一下etc目录下的profile文件,再文件的最下面加上以下内容:

#####JAVA_HOMR
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

     这里说明以下哈,JAVA_HOME的值就是自己jdk解压的路径。下面我们再继续使用source 命令重新加载profile文件,是我们刚才修改的配置生效。然后我们在终端输入java -version命令。查看Java环境是否安装成功。

出现了上图的信息 就说明Java环境已经OK了。接下来我们来安装es, 首先解压安装包到es目录下,

解压之后我们来到config目录下,修改elasticsearch.yml文件 

这里给大家说明一下这个文件中的配置信息的含义:

 

 

      好了,关于每个配信的属性具体的用法后续将会给大家详细的解释,这里我们只需要配置es的日志路径和存放数据的路径,同时我们为了后续的测试方便,因此将network.host设置成0.0.0.0,含义是任何ip都可以访问。后续会为大家介绍这个配置的具体用法。配置完成之后我们还需要修改jvm.options这个配置文件,将默认的内存设置成256M,这里不修改也可以,主要是我自己的虚拟机只配了2G的内存,如果是生产使用的话可以根据服务器的配置来决定。这里给大家一个建议,我们在修改配置文件的时候,一般最好先备份文件,即复制一份,文件名加上日期后缀,再进行修改。好了,修该完成之后我们再es路径下新建logs和data目录,用来存放日志和数据。

    接下来就可以启动服务了,我们直接执行bin目录下的elasticsearch脚本就可以了

启动之后我们会发现,程序报错了,错误信息如下所示:

再控制台上打印出来一句 java.lang.RuntimeException: can not run elasticsearch as root。意思是es不允许使用root用户来启动,好吧,接下来我们来创建一个普通用户es,并将es目录权限分配给es用户

  好了,接着我们使用es用户来启动服务。 好吧,我们有发现新的问题了,如下图所示:

我们可以发现有两个错误,max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]和 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 。也就是说elasticsearch进程的最大文件描述符太低,请至少增加到设置成65536第二个错误是最大虚拟内存区域vm.max_map_计数最少要设置成262144。emmmm...,说白了就是说es嫌弃我的服务器环境太low了,他拒绝启动。好吧,我们接下来使用root用户修改上述的配置。首先在etc下的sysctl.conf文件中新增一行,设置vm.max_map_count。然后

修改完成之后我们需要使用sysctl.conf文件生效 

 

 

好了,我们再次登录es用户,启动服务就是正常的了,

      好了,这种启动方式会占用一个终端,我们接下加上一个-d的参数,可以进行后台启动。启动之后我们使用jps命令来查看es的进程号,

接着我们在logs目录中查看日志来判断服务是否启动的过程是否有报错。 

好了,接下来我们打开浏览器,访问http://192.168.137.93:9200/

这个时候,我们的单机版的es环境搭建完毕!接下来我们来安装kibana。我们将kibana解压,

 我们需要修改config目录下的配置文件,指定kibana的端口和es的服务url,如下图所示:

配置完成之后我们就可以启动kibana服务了。我们使用nohup来进程后台启动

 启动成功之后我们打开浏览器,访问http://192.168.137.93:5601/即可。

这里我们选择Dev-tools,进入控制台:

好了,我们操作es的客户端也安装好了,下面我们就来准备学习es的基础知识了。 

      首先,我们来聊一下es的一些基本的概念,首先是索引(index)。所谓的索引库我的理解就是存放一些数据的集合,相当于关系型数据库的一个实例,例如mysql中的一个数据库。接着是type,在es中,type就是索引库中的具有一些具有共同特征的文档的集合,而文档就是es中的一条记录,存放json格式的数据,也可以理解成es中存储的一个对象,文档是es里最小的数据单元。需要注意的是在6.0的版本之每个索引中只能还有一个type,因此可以使用_doc来代替。最后,还有一个比较重要的概念就是映射,数据如何存放到索引对象上,需要有一个映射配置,包括:数据类型、是否存储、是否分词等。而Mapping就是用来定义文档中每个字段的类型。好了,这里先给大家简单的介绍一下,后续会和结合案例和大家深入的探讨相关的概念。接下来我们在kibana 中使用PUT创建一个index 

接着使用GET命令来查看索引

 解释一下左侧的内容,其中 index里面的number_of_shards表示的是分片数量number_of_replicas表示每个分片的副本数量,然后就是这个索引的uuid以及版本标识。

接着我们可以使用DELETE来删除这个索引。

好了,接下来,我们再来创建索引,这次我们需要初始化一些信息,例如设置分片数量和每个分片的副本数量

 我们创建索引的时候还可以设置一些参数信息。接着我们在user_index中添加文档信息。

 

这里我们向索引库中添加了一条数据。我们使用GET 可以查询 :

如果我们想要修改其中的属性可以将修改后的再次塞进去,例如,我们将年龄改成20后再次的插入result的值是updated,如下图所示:

 或者我们使用第二种方式进行修改,如下图所示:

我们继续查询,发现也可以修改:

好了,最后我们可以使用DELETE指令将这条数据删除,

 

 好了,以上就是es中简单的增删查改。今天就先给大家介绍这么多了。

 

 

 

  相关解决方案