简介:介绍搜索的基本概念,市面上主流的搜索框架elasticSearch和solr等对比
- 什么是搜索:
1 | 在海量信息中获取我们想要的信息 |
- 传统做法:
1 | 文档中使用系统的Find查找 |
- 问题:
1 | 海量数据中不能及时响应,少量数据可以通过传统的MySql建立索引解决 |
- 搜索引擎:
1 | 存储非结构化的数据 |
- 常用框架:
1 | Lucene |
- elasticSearch
1 | 基于Lucene的搜索框架, 它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口 |
3、新版本 elasticSearch 6.1.2介绍
简介:介绍ES的主要特点和使用场景,新特性讲解
- elasticSearch主要特点
1 | 特点:全文检索,结构化检索,数据统计、分析,接近实时处理,分布式搜索(可部署数百台服务器),处理PB级别的数据搜索纠错,自动完成 |
- 新特性讲解
1 | 6.1.x版本基于Lucene 7.1.0,更快,性能进一步提升,对应的序列化组件,升级到Jackson 2.8 |
- 官方文档:
(1) 6.0更新特性 https://www.elastic.co/guide/en/elasticsearch/reference/6.0/release-notes-6.0.0.html#breaking-java-6.0.0 (2) 6.1更新特性 https://www.elastic.co/guide/en/elasticsearch/reference/6.1/release-notes-6.1.0.html
4、windows安装启动ElasticSearch
简介:windows环境下安装JDK8和 ElasticSearch
5、阿里云服务器 快速安装ElasticSearch
简介:阿里云ecs介绍,wget命令下载安装包,快速部署 elasticSearch节点
- linux下使用wget下载jdk8:
- 进到目录/usr/local/software
1 | wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz" |
- vim /etc/profile
1 | 加入 |
- 使用wget 下载elasticsearch安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz
- 解压
tar -zxvf elasticsearch-6.2.2.tar.gz
- 配置es出现相关问题处理:
1、问题一
1 | Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12) |
解决:
1
内存不够,购买阿里云的机器可以动态增加内存
2、问题二
1 | [root@iZwz95j86y235aroi85ht0Z bin]# ./elasticsearch |
解决:
1
2用非root用户
添加用户:useradd -m 用户名 然后设置密码 passwd 用户名
3、问题三
1 | ./elasticsearch |
解决:
1
权限不够 chmod 777 -R 当前es目录
6、ElasticSearch目录和配置文件介绍
简介:介绍ES目录结构,配置文件基本说明
1 | bin: 启动文件 |
7、ElasticSearch核心配置文件讲解,性能优化配置
简介:讲解核心配置文件,JVM参数配置,性能优化
1 | 健康状态检查:http://localhost:9200/_cluster/health |
- 注意事项
1 | 本地启动多个节点,复制es安装包的时候,需要删除里面data目录里面的资料,不然无法加入集群 |
8、ElasticSearch基础概念讲解
简介:es的index索引,document文档对象,副本,多节点集群等基础知识
通俗的解释:
1
2
3在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中, 索引名称必须是小写
Relational DB -> Database -> Table -> Row -> Column
Elasticsearch -> Indice -> Type -> Document -> Field分片shards:
1
数据量特大,没有足够大的硬盘空间来一次性存储,且一次性搜索那么多的数据,响应跟不上es提供把数据进行分片存储,这样方便进行拓展和提高吞吐
副本replicas:
1
分片的拷贝,当主分片不可用的时候,副本就充当主分片进行使用
Elasticsearch中的每个索引分配5个主分片和1个副本:
1
如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个复制分片(1个完全拷贝),这样每个索引总共就有10个分片。
9、search搜索语句入门之URL搜索
简介:讲解URL中的_search搜索语句的基本使用,美化响应结果, 索引的基础操作
集群健康检查
1
2http://localhost:9200/_cat/health?v
http://localhost:9200/_cluster/health(推荐)状态说明
1
2
3green:正常
yellow: 集群正常 数据正常,部分副本不正常
red: 集群部分正常,数据可能丢失,需要紧急修复查询节点列表
1
http://localhost:9200/_cat/nodes?v
查看所有索引
1
2http://localhost:9200/_cat/indices?v
目前 集群中没有任何索引补充
1
2
3
4curl
-X 指定http的请求方法 有HEAD GET POST PUT DELETE
-d 指定要传输的数据
-H 指定http请求头信息新增索引
1
2curl -XPUT 'localhost:9201/blog_test?pretty'
curl -XPUT 'localhost:9201/blog?pretty'删除索引
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45curl -XDELETE 'localhost:9200/blog_test?pretty'
新增一条记录,并指定为article类型,ID为1
curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/1?pretty' -d '
{
"title": "D课堂啦啦啦",
"content":"xdclass.net D课堂成立于2016年的,专注互联网在线教育,课程范围包括前端,后端,大数据,人工智能,微信开发等"
}'
curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/2?pretty' -d '
{
"title": "test",
"content":"testsfsdfdsfdsf",
"PV":10
}'
curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/3?pretty' -d '
{
"title": "test",
"content":"testsfsdfdsfdsf",
"PV":23
}'
空间不够新增失败处理 curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
{
"error" : {
"root_cause" : [
{
"type" : "cluster_block_exception",
"reason" : "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
}
],
"type" : "cluster_block_exception",
"reason" : "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
},
"status" : 403
}
ID查询记录
curl -XGET 'localhost:9200/blog/article/1'
curl -XGET 'localhost:9200/blog/article/1?pretty'(美化推荐)
搜索
curl -XGET 'http://localhost:9201/blog/article/_search?q=title:A'
10、search搜索语句入门之结构化查询语句DSL
简介:讲解结构化查询语句DSL的使用,bool,filter查询等
- 新增数据集
1 | curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/7?pretty' -d ' |
- 什么是query DSL
1 | Domain Specific Language 领域特定语言 |
1 | 大部分filter的速度快于query的速度 |
章节三 Logstash零基础入门到采集日志实战
11、Logstash基本介绍和使用场景
简介:讲解什么是logstash,里面的基本工作流程input,filter,output等说明
1 | 什么是logstash (文档地址 https://www.elastic.co/guide/en/logstash/current/index.html) |
- 流程讲解
1 | logstash通过管道pipeline进行传输,必选的两个组件是输入input和输出output,还有个可选过滤器filter |
1 | # 输入 |
12、Logstash插件介绍
简介:讲解input,filter和output的插件的基本使用
- 简单的配置 test.conf
1 | input { |
1 | file,http,kafka,rabbitmq等 |
1 | grok(号称将非标准化的日志数据转换成标准化并且可搜索数据最好的方式,常用于处理Niginx,sysLog等日志) |
1 | elasticSearch,cvs,email,file等 |
13、阿里云服务器部署Logstash 6.1.2
简介:阿里云Centos部署Logstash,目录文件,配置讲解,基本功能测试
- 下载安装包
1 | wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.2.tar.gz |
- 快速启动(需要java8 jre,目前不支持java9)
1 | ./bin/logstash -e 'input {stdin {}} output {stdout {}}' |
- 目录文件说明
1 | https://www.elastic.co/guide/en/logstash/6.2/dir-layout.html |
- 配置讲解
1 | https://www.elastic.co/guide/en/logstash/6.2/logstash-settings-file.html |
14、Logstash采集输送日志input filter output流程测试
简介:讲解Logstash采集日志和输送日志流程测试,包括input,filter和output元素的测试
- bin/logstash -f test1.conf
1 | ./logstash -f ../config/test1.conf |
- codec的使用( Coder/decoder 两个单词首字母缩写)
1 | Codec: 解码编码 数据格式 |
- logstash更细化的处理流程
1 | input->decode->filter->encode->output |
15、logstash案例实战之读取日志输出到elasticsearch
简介:从日志文件中读取日志,输出到elasticsearch集群中
- logstash配置文件
1 | 配置三 test3_es.conf |
- 验证
1 | 查看索引列表 http://localhost:9201/_cat/indices?v |
章节四 Kibana 6.2版本基础入门到实战
16、阿里云cenos服务器部署kibana6.2.2
简介:快速部署kibana,并配置外网可以访问
- 阿里云下载安装kibana
1 | wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-x86_64.tar.gz |
- 访问地址
1 | 本机:localhost:5601 |
- 阿里云外网访问
1 | 开放端口,修改配置文件 confing目录下的kibana.yml |
- 守护进程后台启动
1 | nohup XXX & |
17、kibana基本介绍、和elasticSearch版本兼容问题
简介:讲解什么是kibana,目录文件讲解,配置等 官网文档地址:https://www.elastic.co/guide/en/kibana/current/setup.html ELK
- 注意事项
1 | kibana和elsticserch版本不能差别大,否则无法正常使用 比如 Kibana 6.x 和 Elasticsearch 2.x不能正常使 |
- kibana.yml常见配置项
1 | elasticsearch.pingTimeout 日常用的ping |
18、kibana面板讲解和功能使用说明
简介:讲解kibana的web界面,各个模块划分,功能的基本使用
- kibana状态及服务器资源使用率
1 | http://120.79.160.143:5601/status |
- 创建索引表达式
1 | 使用*统配符,去匹配ES中的一个或多个索引(如果没有匹配,无法点击下一步) |
- discover面板发现数据
1 | 可以指定时间进行查询 |
章节五 项目实战系列之阿里云服务器部署ELK,采集业务日志和分析
19、项目实战系列之《采集业务应用日志》配置
简介:选择日志源,配置logstash采集并输送到elasticSeach
- 常见问题解决
1 | JVM内存溢出导致的 ES或者Logstash服务启不来,报错 insufficient memory |
20、项目实战系列一之《采集业务应用日志》应用
简介:通过kibana的web管理界面,建立简单的日志分析功能
21、项目实战系列之Kibana图形、报表分析
简介:讲解业务应用日志在Kibana上的可视化分析,柱状图,饼状图等
- 官方文档地址:
1 | https://www.elastic.co/guide/en/kibana/current/tutorial-load-dataset.html |
- 下载数据集
1 | wget https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip |
- 导入数据到es中
1 | curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json |
- 示例地址
1 | https://www.elastic.co/guide/en/kibana/current/tutorial-visualizing.html |
- 本文作者: LHS
- 本文链接: https:/LiuHuAshen.github.io/2020/09/28/分布式系统ELK搭建日志采集系统/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!