ELK(入门篇)

article/2025/11/3 23:18:13

简介

ELK由Elasticsearch、Logstash、Kibana三个优秀的开源项目组成,取首字母简写命名为ELK,主要提供对数据的加载、处理、查询等功能。其中:

Elasticsearch:对数据进行搜集、分析、存储。
Logstash:对数据的搜集、分析、过滤。
Kibana:为 Logstash 和 ElasticSearch 提供的数据分析友好的 Web 界面。

一、安装

1、Elasticsearch安装

1.1、到官网下载Elasticsearch安装。下载地址:Download Elasticsearch | Elastic

1.2、上传安装包到服务器。

1.3、解压安装包,如(注意版本区别): tar -zxvf elasticsearch-6.8.6.tar.gz
1.4、添加启动用户

注意:Elasticsearch不能使用root用户进行启动。

groupadd elastic

useradd -g elastic elastic

1.5、为启动用户添加权限

chmod 755 elasticsearch-6.8.6chown -R elastic:elastic elasticsearch-6.8.6usermod -g root elastic编辑 /etc/sudoers文件 ,如:vim /etc/sudoers添加: elastic ALL=(ALL)      ALL去掉:%wheel  ALL=(ALL)       ALL

1.6、设置elasticsearch参数

cd elasticsearch-6.8.6/

a)、设置内存:vim config/jvm.options
#根据自己机器的配置设置内存大小
-Xms2g
-Xmx2g
b)、设置内核参数:sysctl -w vm.max_map_count=262144
vim /etc/sysctl.conf
增加以下内容:
fs.file-max = 65536
vm.max_map_count = 262144
执行更改:sysctl -pc)、修改ES配置:vim config/elasticsearch.yml修改内容:
network.host: IP地址
http.port: 端口
cluster.name: 集群名称
设置节点的名称,节点名称

1.7、启动elasticsearch

#切换 elastic 用户
su elastic 
#启动elastic,-d表示后台启动
./bin/elasticsearch -d

1.8、校验elasticsearch是否启动

ps -ef |grep elastic ,如出现以下进程则表示成功

2、安装Kibana

2.1、下载Kibana,地址:Download Kibana Free | Get Started Now | Elastic

2.2、上传服务器,并解压

tar -zxvf kibana-6.8.6-linux-x86_64.tar.gz

2.3、服务参数设置

vim config/kibana.yml
server.port: 端口
server.host: IP
elasticsearch.url: 连接elasticsearch服务地址

2.4、启动Kibana

bin/kibana 

如下图所示

 二、使用

1、使用kibana 对elasticsearch进行增删改查操作

1.1、打开Kibana,进入Dev Tools 界面

1.2、创建索引

PUT /test_index
{"settings": {"number_of_shards": 3,            "number_of_replicas": 1        },"mappings": {                       "_doc": {                       "properties": {"id": {"type": "long"},"key": {"type": "text"},"value": {"type": "text"    }}}}
}

 1.3、新增数据


POST /test_index/_doc/1/_create
{"id": 1,"key": "名称","value": "不甘于平凡的溃败"
}

1.4、查询数据

GET /test_index/_search

 1.5、修改数据

PUT /test_index/_doc/1
{"id": 1,"key": "名称2","value": "不甘于平凡的溃败2"}

1.6、删除数据

DELETE /test_index/_doc/1

2、使用Logstash 自动同步Mysql数据到 elasticsearch中

2.1、下载Logstash,地址:Download Logstash Free | Get Started Now | Elastic

2.2、上传服务包,并解压

unzip logstash-6.8.0.zip

2.3、创建mysql表

CREATE TABLE `t_test` (`id` int(11) NOT NULL AUTO_INCREMENT,`key` varchar(255) DEFAULT NULL,`value` varchar(255) DEFAULT NULL
);INSERT INTO `bsf_dev`.`t_test`(`id`, `key`, `value`) VALUES (1, '性别', '男');
INSERT INTO `bsf_dev`.`t_test`(`id`, `key`, `value`) VALUES (2, '年龄', '18');
INSERT INTO `bsf_dev`.`t_test`(`id`, `key`, `value`) VALUES (3, '职业', '程序员');

如:

 2.4、修改group_concat函数长度

#SET GLOBAL group_concat_max_len = 4294967295;
#SET SESSION group_concat_max_len = 4294967295;

2.5、准备数据库驱动包

将mysql-connector-java-8.0.11.jar 放到bin 目录下

2.6、准备文件 

#创建last_run_metadata_path 文件
创建 statement 文件夹,文件夹里面新建 doc_statement 文件#准备 sql 文件
创建sql文件夹,新建doc.sql 文件,内容如下:
Select * from  t_test#准备任务文件 
在config 下新建 mysql2es.yml 文件,内容如下:input {stdin {}jdbc {# 名称,可以用于输出类型选择type => "doc_jdbc"# jdbc sql server 驱动jdbc_driver_library => "mysql-connector-java-8.0.11.jar"# 驱动名jdbc_driver_class => "com.mysql.cj.jdbc.Driver"# jdbc 连接字符串jdbc_connection_string => "jdbc:mysql://?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"# 数据库用户名jdbc_user => ""# 数据库密码jdbc_password => ""# 调度时间,分 时 天 月 年,默认为1分钟执行一次schedule => "*/45 * * * *"# 是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中record_last_run => false# 是否需要记录某个 column 的值,如果 record_last_run 为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值use_column_value => false# 如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的.比如:ID.tracking_column => id#指定文件,来记录上次执行到的 tracking_column 字段的值#比如上次数据库有 10000 条记录,查询完后该文件中就会有数字 10000 这样的记录,下次执行 SQL 查询可以从 10001 条处开始.#我们只需要在 SQL 语句中 WHERE MY_ID > :last_sql_value 即可. 其中 :last_sql_value 取得就是该文件中的值(10000)last_run_metadata_path => ""# 是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录clean_run => true# 是否将 column 名称转小写lowercase_column_names => false# 存放需要执行的 SQL 语句的文件位置statement_filepath => "/sql/doc.sql"# 开启分页jdbc_paging_enabled => "true"# 每页条数jdbc_page_size => "100"}}filter {# 默认使用的是Unix时间,我们需要将logstash同步数据到ES时间+8小时#  数据库中的时间字段也可以这样设置#  ruby {# 	code => "event.set('@timestamp',event.get('@timestamp').time.localtime + 8*60*60)"#  }}output {if [type]=="doc_jdbc" {elasticsearch {# index 给一个文档建立索引# delete 通过id值删除一个文档(这个action需要指定一个id值)# create 插入一条文档信息,如果这条文档信息在索引中已经存在,那么本次插入工作失败# update 通过id值更新一个文档。更新有个特殊的案例upsert,如果被更新的文档还不存在,那么就会用到upsertaction => "index"#ESIP地址与端口hosts => ""#ES索引名称index => "test_index"#ES类型名称document_type => "_doc"#选用哪个字段作为ES的主键document_id => "%{id}"}}# 这里输出调试,正式运行时可以注释掉stdout {codec => json_lines}}

如:

2.7、执行同步操作

./bin/logstash -f ./config/mysql2es.conf

2.8、检查数据是否导入成功

3、SpringBoot整合Elasticsearch

3.1、导入Maven依赖

		<!-- es依赖 --><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${elasticsearch}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>${elasticsearch}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>${elasticsearch}</version><exclusions><exclusion><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId></exclusion><exclusion><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>${elasticsearch}</version></dependency>

3.2、在application文件添加ES配置信息

elasticsearch.host=IP地址
elasticsearch.port=端口
elasticsearch.clustername=集群名

3.3、添加配置类

import lombok.Data;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.net.InetAddress;@Configuration
@ConfigurationProperties(prefix = "elasticsearch")
@Data
public class ElasticsearchConfig {private static final Logger log = LoggerFactory.getLogger(ElasticsearchConfig.class);private String host;private int port;private String clustername;private int queryport;@Beanpublic RestHighLevelClient restHighLevelClient() {RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost(host, queryport, "http")));return client;}@Beanpublic TransportClient transportClient() {TransportClient transportClient = null;try {log.info("Elasticsearch TransportClient create Starting...");// 配置信息Settings esSetting = Settings.builder().put("cluster.name", clustername).build();transportClient = new PreBuiltTransportClient(esSetting);//单节点配置TransportAddress transportAddress = new TransportAddress(InetAddress.getByName(host), Integer.valueOf(port));transportClient.addTransportAddresses(transportAddress);log.info("Elasticsearch TransportClient create Start completed.");log.info("Elastic HostName:{}", host);log.info("Elastic Nodes:{}", clustername);} catch (Exception e) {log.error("Elasticsearch TransportClient create error!!!", e);}return transportClient;}
}

3.4、代码实现业务操作

//新增、修改数据JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(data));IndexResponse response = transportClient.prepareIndex(Constant.ES_INDEX, Constant.ES_TYPE, String.valueOf(data.getId())).setSource(jsonObject).get();//删除数据DeleteRequest request = new DeleteRequest(Constant.ES_INDEX, Constant.ES_TYPE, dataId);DeleteResponse eleteResponse = restHighLevelClient.delete(request, RequestOptions.DEFAULT);//查询数据// 1. 创建批量搜索请求,并绑定索引
SearchRequest searchRequest = new SearchRequest(Constant.ES_INDEX);
// 2. 构建搜索条件
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.must(QueryBuilders.termQuery("key", "年龄"));
boolQueryBuilder.should(QueryBuilders.matchQuery("value", "18"));
// 最小匹配
boolQueryBuilder.minimumShouldMatch(1);
sourceBuilder.query(boolQueryBuilder);
// 设置分页参数
int from = (page.getPageNo() - 1) * page.getPageSize();
int size = page.getPageSize();
sourceBuilder.from(from);
sourceBuilder.size(size);
// 3. 将查询条件放入搜索请求request中
searchRequest.source(sourceBuilder);// 4. 发起查询请求获取数据
SearchResponse response = response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

到此,ELK入门应用到此结束,更多精彩技术分享请浏览本人博客:不甘于平凡的溃败的博客_CSDN博客-java,数据库,IDEA领域博主


http://chatgpt.dhexx.cn/article/iEoENu52.shtml

相关文章

ELK详解

一&#xff0c;搜索原理 1&#xff0c;前提条件数据准备 a.获取数据 - 从互联网中获取数据 爬虫&#xff0c;网站数据b.建立文档 - 方便本地查询&#xff0c;将之前获取的数据&#xff0c;以文档的样式存在采取专用的存储软件&#xff0c;将文件&#xff08;Document&#…

ELK学习总结——我们为什么要用ELK

一. ELK是什么&#xff1f; ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案&#xff0c;是三个产品的首字母缩写&#xff0c;分别是ElasticSearch、Logstash 和 Kibana。 ElasticSearch简称ES&#xff0c;它是一个实时的分布式搜索和分析引擎&#xff0c;它可以…

1、ELK介绍

一、ELK简介 ELK是三个开源软件的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat&#xff0c;它是一个轻量级的日志收集处理工具(Agent)&#xff0c;Filebeat占用资源少&#xff0c;适合于在各个服务器上搜集…

ELK超详细配置

文章目录 一、ELK日志分析系统简介1.1、ELK日志分析系统组成1.2、日志处理步骤二、3款软件各自概念2.1、Elasticsearch介绍2.2、Logstash介绍2.3、Kibana介绍三、ELK日志分析系统部署3.1、实验环境及准备3.2、实验步骤3.2.1、elk-1和elk-2中部署Elasticsearch3.2.2、apache主机…

ELK入门——ELK详细介绍(ELK概念和特点、Elasticsearch/Logstash/beats/kibana安装及使用介绍、插件介绍)

目录 主要参考链接 一、什么是ELK&#xff08;端口9200&#xff09; 主要特点&#xff1a; 1.存储&#xff1a;面向文档JSON 2.检索&#xff1a;倒排乐观锁 3.分析&#xff1a;监控预警可视化 4.支持集群 二、Logstash&#xff08;端口5044&#xff09; 三、Beats 四…

ELK 是什么?

前言 本文隶属于专栏《1000个问题搞定大数据技术体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系 正文 ELK ELK是三个软…

【ElasticSearch】ELK简介

本文目录 一、什么是ELK&#xff1f; 二、ELK简介 2.1 E -- ElasticSearch 2.2 L -- Logstash 2.3 K -- Kibana 三、ELK优点 一、什么是ELK&#xff1f; ELK 是 Elasticsearch、Logstash、Kibana 三大开源框架的首字母大写简称。市面上也被称为Elastic Stack。其中 Elas…

ELK详解(一)——ELK基本原理

今天继续给大家介绍Linux运维相关知识&#xff0c;本文主要内容是ELK的基本原理。 一、ELK简介 ELK是三个软件的统称&#xff0c;即Elasticsearch、Logstash和Kibana三个开源软件的缩写。这三款软件都是开源软件&#xff0c;通常配合使用&#xff0c;并且都先后归于Elastic.c…

ELK介绍

文章目录 1.ELK简介2.ELK架构图3.Filebeat工作原理4.Logstash工作原理 1.ELK简介 ELK是三个开源软件的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat&#xff0c;它是一个轻量级的日志收集处理工具(Agent)&a…

ELK整理

ELK 一、ELK介绍二、 Elasticsearch的安装部署1、依赖于java,所以首先安装java环境-jdk2、 Elasticsearch的安装3、Elasticsearch-head插件的安装4、插入&#xff0c;查询&#xff0c;更新和删除数据 三、集群的搭建1、将三个节点搭建成功2、故障转移 四、kibana的安装以及使用…

ELK搜索高级

ELK搜索高级 1&#xff0e; 简介 ​ ELK是包含但不限于Elasticsearch&#xff08;简称es&#xff09;、Logstash、Kibana 三个开源软件的组成的一个整体&#xff0c;分别取其首字母组成ELK。ELK是用于数据抽取&#xff08;Logstash&#xff09;、搜索分析&#xff08;Elastic…

ELK初学者

一般我们需要进行日志分析场景&#xff1a;直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中&#xff0c;此方法效率低下&#xff0c;面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理&#xff0c;所有服…

部署ELK+Kafka+Filebeat日志收集分析系统

ELKKafkaFilebeat日志系统 文章目录 ELKKafkaFilebeat日志系统1.环境规划2.部署elasticsearch集群2.1.配置es-1节点2.2.配置es-2节点2.3.配置es-3节点2.4.使用es-head插件查看集群状态 3.部署kibana4.部署zookeeper4.1.配置zookeeper-1节点4.2.配置zookeeper-2节点4.3.配置zook…

什么是ELK(小白简单快速的认识什么是ELK)

Elastic Stack 写在前面&#xff1a;刚接触elk&#xff0c;总是有点懵懵懂懂&#xff0c;我一向是比较习惯在使用过后更好更快的了解这个东西是做什么的&#xff0c;但这个elk是真的有点恶心到我了&#xff0c;那就是对于初期的模拟应用对小白太太太不友好了&#xff0c;所以在…

elk(Elasticsearch、Kibana、Logstash )有这篇就够了,超级详细,包教会

目录 1. elk介绍 2. elk安装&#xff08;windows版&#xff09; 3. elk安装&#xff08;linux版&#xff09; 4. 收集springboot项目日志&#xff08;windows版&#xff09; 5. 收集springboot项目日志&#xff08;linux版&#xff09; 6. elk 补充&#xff08;后台运行&…

linux中找不到vim命令

1.首先查看vim 安装包&#xff0c;如下图 rpm -qa | grep vim 2.下载vim&#xff08;需要连接网络&#xff09; yum install -y vim* 3.安装成功后查看 rpm -qa | grep vim

vim命令模式指令一览

提示&#xff1a;本文介绍了linux下vim中的快捷指令。 文章目录 注意&#xff1a;本文所有指令都只在命令行模式下有效&#xff01;&#xff01;&#xff01; vim指令图&#xff1a; 指令解析命令解析h光标向左移动j光标向下移动k光标向上移动l光标向下移动yy/nyy复制当前行/…

Linux中vim命令详解

vim 是linux中最基本的操作 vim常用模式 1、命令模式 2、插入模式 3、底行模式 4、可视化模式,命令模式按v进入 5、替换模式,命令模式下按r进入 1、插入模式 默认进入文件打开的是命令模式 在这个模式下是不能插入字符的 按“i”键,然后就进入到插入模式了,屏幕下…

vi/vim命令

四种模式 在日常的使用中&#xff0c;Linux并没有像Windows一样很方便的可视化界面&#xff0c;通常需要记很多的命令&#xff0c;复杂难记&#xff0c;今天我以不同模式的方式跟大家梳理哪些命令在哪种模式下使用&#xff0c;方便记忆。 vi/vim共分为四种模式&#xff0c;命…

Linux安装vim命令

最近在Linux上使用vim编辑器编写shell脚本的时候&#xff0c;遇到了这样一个问题&#xff0c;如下&#xff1a; -bash: vim: command not found 这是因为vim命令没有安装&#xff0c;于是我从网上搜索了很多关于安装vim命令的教程&#xff0c;不过大都比较繁琐&#xff0c;如今…