ElasticSearch学习(1)

  1. 安装ElasticSsearch
    1. 配置elasticsearch.yml
    2. 配置jvm.options
    3. 启动elasticsearch
    4. ES配置用户名密码
  2. 安装Kibana
  3. Docker安装es
  4. 安装Logstash

ElasticSearch是一款基于Lucene的功能强大的开源分布式搜索与数据分析引擎,它具有高性能、易于扩展的优点,不仅可以从海量数据中快速找到相关信息,还被广泛运用于大数据近实时的分析,包括日志分析、指标监控、信息安全等多个领域。

相关链接:
ElasticSearch官网
Elastic公司技术博客
Elastic中文社区

常听的ELK,即ElasticSearch、Logstash、Kibana,可以搭建一个完整的数据采集、存储、可视化的平台,这里来先动手实践,对其流程有一个感官的理解,后面再慢慢去深入了解ElasticSearch的各种高级用法。

首先,需要下载ELK三件套,注意,这三者的版本必须一致,否则无法正常进行数据采集,我这里采用的是7.8.0版本的:

另外还需要注意的是,安装之前需要JDK环境的支持,JAVA_HOME的配置很简单,这里就不多说了。

安装ElasticSsearch

下载ES压缩包,解压后目录结构如下所示:

目录说明:

配置elasticsearch.yml

配置jvm.options

还有一点要注意,上面的值设置不要超过30GB大小。

启动elasticsearch

检查确认启动成功:

注意这里,cluster_name,是ES集群的名称,默认名字为elasticsearch,这里只是单机的一个实例,单一个集群有多个节点时,需要确保集群名称一样,可以通过如下方式在本机启动一个集群的多个节点:

./elasticsearch -E node.name=linjk_1 -E cluster.name=linjk-framework-test -E path.data=xxx -E http.port=9202 -d
./elasticsearch -E node.name=linjk_2 -E cluster.name=linjk-framework-test -E path.data=xxx -E http.port=9204 -d
./elasticsearch -E node.name=linjk_3 -E cluster.name=linjk-framework-test -E path.data=xxx -E http.port=9206 -d

节点是一个Elasticsearch实例,本质是一个Java进程,每个节点启动后,会分配一个UID,保存在data目录下。

然后可通过URL查看当前集群有多少个节点:

为了后面方便,这里安装了IK中文分词器:

elasticsearch-plugin.bat install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip

安装完成后,重启ES,查看安装的插件:

ES配置用户名密码

提示需要配置X-Pack,配置如下:

重启ES,重新配置密码:(这里我都用了一个密码ljk121)

这是再访问http://localhost:9200,就会弹出登录对话框了:

安装Kibana

上面是通过浏览器去调用ES提供的一些API,但是只能发GET请求,后面需要发POST请求去查询一些数据就不方便了,这里可以借助Kibana这个工具,启动Kibana很简单,修改其配置文件,然后执行bin目录下的bat或sh脚本即可,注意,ES首先需要启动,在这里ES是服务端,Kibana是客户端。

修改配置文件kibana.yml

启动:

验证:【http://localhost:5601】*注意:登录Kibana的账号信息和ElasticSearch的一样*

圈住的Dev Tools很有用,如下所示:

可以很方便运行ES提供的一些API函数。这里暂时就用到Kibana的Dev Tools,其他功能后面再慢慢探索。

Docker安装es

扩展
设置Docker网络
Docker Image中安装插件
Cerebro 源码
安装 docker-compose
ELK docker-compose 配置

然后在该文件目录下执行命令docker-compose up即可同时启动elasticsearch和kibana了。

安装es集群监控工具:

其监控页面如下:

安装Logstash

有了存储数据的ES和可视化工具Kibana,现在就需要从数据库导入数据到ES了,这里从MySQL导入数据到ES,以借助ES强大的搜索和分析能力去进一步实现后面的业务功能。

新建一个测试库和测试表:

新建Logstash导入数据的配置文件:

如ES开启了密码,hosts配置需要修改为:http://elastic:xxx@localhost:9200

编写后最好测试一下配置文件是否有语法问题:

没问题,启动:

报错:

解决:

下载安装插件:

https://github.com/logstash-plugins/logstash-input-jdbc/releases/tag/v4.3.19

然后安装:(生成gem文件这一步需要先安装Ruby)

再次启动,可以看到,在执行数据同步了:

去ES查询验证一下:

可以看到,在ES可以看到了,接下来,在MySQL修改这条数据,看是否也能同步更新ES的数据,同步的时间最小粒度是1分钟,可以看到,数据也变化了。

这里使用一张表的数据,对应于一个索引的数据,数据库的每一条数据对应于索引的一个文档。Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位,文档会被序列化成JSON格式存储,每个文档都有其UUID。

索引体现了逻辑空间的概念,每个索引一般都会有分片,而分片,体现的就是物理空间的概念,索引的mapping定义文档字段的类型,setting定义不同的数据分布。

好了,从采集数据到存储到ES的链路走通了,后面学习再慢慢研究使用ES了。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 linjk121@163.com.