2018年ElasticSearch6.2.2教程ELK搭建⽇志采集分析系统(教程
详情)
章节⼆ elasticSearch 6.2版本基础讲解到阿⾥云部署实战
2、搜索引擎知识介绍和相关框架
简介:介绍搜索的基本概念,市⾯上主流的搜索框架elasticSearch和solr等对⽐
什么是搜索:在海量信息中获取我们想要的信息
传统做法:
1、⽂档中使⽤系统的Find查
2、mysql中使⽤like模糊查询
问题:
1、海量数据中不能及时响应,少量数据可以通过传统的MySql建⽴索引解决
2、⼀些⽆⽤词不能进⾏过滤,没法分词
3、数据量⼤的话难以拓展
4、相同的数据难以进⾏相似度最⾼的进⾏排序
搜索引擎:
1、存储⾮结构化的数据
2、快速检索和响应我们需要的信息,快-准
3、进⾏相关性的排序,过滤等
4、可以去掉停⽤词(没有特殊含义的词,⽐如英⽂的a,is等,中⽂:这,的,是等),框架⼀般⽀持可以⾃定义停⽤词
常⽤框架:
1、Lucene
Apache下⾯的⼀个开源项⽬,⾼性能的、可扩展的⼯具库,提供搜索的基本架构;
如果开发⼈员需⽤使⽤的话,需⽤⾃⼰进⾏开发,成本⽐较⼤,但是性能⾼
2、solr
Solr基于Lucene的全⽂搜索框架,提供了⽐Lucene更为丰富的功能,
同时实现了可配置、可扩展并对查询性能进⾏了优化
建⽴索引时,搜索效率下降,实时索引搜索效率不⾼
数据量的增加,Solr的搜索效率会变得更低,适合⼩的搜索应⽤,对应java客户端的是solrj
3、elasticSearch
基于Lucene的搜索框架, 它提供了⼀个分布式多⽤户能⼒的全⽂搜索引擎,基于RESTful web接⼝
上⼿容易,拓展节点⽅便,可⽤于存储和检索海量数据,接近实时搜索,海量数据量增加,搜索响应性能⼏乎不受影响;
分布式搜索框架,⾃动发现节点,副本机制,保障可⽤性
3、新版本 elasticSearch 6.1.2介绍
简介:介绍ES的主要特点和使⽤场景,新特性讲解
elasticSearch主要特点
1、特点:全⽂检索,结构化检索,数据统计、分析,接近实时处理,分布式搜索(可部署数百台服务器),处理PB级别的数据
搜索纠错,⾃动完成
2、使⽤场景:⽇志搜索,数据聚合,数据监控,报表统计分析
3、国内外使⽤者:,Stack Overflow,GitHub
新特性讲解
1、6.1.x版本基于Lucene 7.1.0,更快,性能进⼀步提升,对应的序列化组件,升级到Jackson 2.8
2、⾃适应副本选择
今天在Elasticsearch中,对同⼀分⽚的⼀系列搜索请求将以循环⽅式转发到主要和每个副本。如果⼀个节点启动了长时间的垃圾收集,这可能会出现问题 - 搜索请求仍将被转发到缓慢的节点,并且会影
响搜索延迟。
在6.1中,我们添加了⼀个称为⾃适应副本选择的实验性功能。每个节点跟踪并⽐较搜索请求到其他节点的时间,并使⽤这些信息来调整向特定节点发送请求的频率。在我们的基准测试中,这样可以⼤⼤提⾼搜索吞吐量,降低99%的延迟。
这个选项在默认情况下是禁⽤的
3、推荐使⽤5.0版本推出的Java REST/HTTP客户端,依赖少,⽐Transport使⽤更⽅便,在基准测试中,性能并不输于Transport客户端,
在5.0到6.0版本中,每次有对应的API更新, ⽂档中也说明,推荐使⽤这种⽅式进⾏开发使⽤,所有可⽤节点间的负载均衡
在节点故障和特定响应代码的情况下进⾏故障转移,失败的连接处罚(失败的节点是否重试取决于失败的连续次数;失败的失败次数越多,客户端在再次尝试同⼀节点之前等待的时间越长)
4、windows安装启动ElasticSearch
简介:windows环境下安装JDK8和 ElasticSearch
5、阿⾥云服务器快速安装ElasticSearch
简介:阿⾥云ecs介绍,wget命令下载安装包,快速部署 elasticSearch节点
linux下使⽤wget下载jdk8:
进到⽬录/usr/local/software
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%acle%2F; oraclelicense=accept-securebackup-cookie" "acle/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-
"
vim /etc/profile
加⼊
export JAVA_HOME=/usr/local/software/jdk8
export JAVA_BIN=/usr/local/software/jdk8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
配置es出现相关问题处理:
1、问题⼀
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed;
error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/temp/elasticsearch-6.2.2/hs_err_pid1912.log
解决:内存不够,购买阿⾥云的机器可以动态增加内存
2、问题⼆
[root@iZwz95j86y235aroi85ht0Z bin]# ./elasticsearch
[2018-02-22T20:14:04,870][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.ute(Elasticsearch.java:112) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.ute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.2.jar:6.2.2]            at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.2.jar:6.2.2]解决:⽤⾮root⽤户
添加⽤户:useradd -m ⽤户名然后设置密码  passwd ⽤户名
3、问题三
./elasticsearch
Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/software/temp/elasticsearch-6.2.2/config/jvm.options 解决:权限不够 chmod 777 -R 当前es⽬录
6、ElasticSearch⽬录和配置⽂件介绍
简介:介绍ES⽬录结构,配置⽂件基本说明
bin: 启动⽂件
log: ⽇志⽂件,包括运⾏⽇志,慢查询⽇志
config: 核⼼配置⽂件
lib: 依赖包
plugins :插件
cluster.name  集名称,同⼀个⽹段⾃动加⼊
node.name      节点名称
http.port    http端⼝
注意事项
本地启动多个节点,复制es安装包的时候,需要删除⾥⾯data⽬录⾥⾯的资料,不然⽆法加⼊集
8、ElasticSearch基础概念讲解
简介:es的index索引,document⽂档对象,副本,多节点集等基础知识
1、通俗的解释:
在Elasticsearch中,⽂档归属于⼀种类型(type),⽽这些类型存在于索引(index)中, 索引名称必须是⼩写
Relational DB -> Database -> Table -> Row -> Column
Elasticsearch -> Indice  -> Type  -> Document -> Field
2、分⽚shards:
数据量特⼤,没有⾜够⼤的硬盘空间来⼀次性存储,且⼀次性搜索那么多的数据,响应跟不上es提供把数据进⾏分⽚存储,这样⽅便进⾏拓展和提⾼吞吐
3、副本replicas:
分⽚的拷贝,当主分⽚不可⽤的时候,副本就充当主分⽚进⾏使⽤
4、Elasticsearch中的每个索引分配5个主分⽚和1个副本
如果你的集中⾄少有两个节点,你的索引将会有5个主分⽚和另外5个复制分⽚(1个完全拷贝),这样每个索引总共就有10个分⽚。
9、search搜索语句⼊门之URL搜索
简介:讲解URL中的_search搜索语句的基本使⽤,美化响应结果, 索引的基础操作
状态说明
green:正常
yellow: 集正常数据正常,部分副本不正常
red: 集部分正常,数据可能丢失,需要紧急修复
补充:
curl
-X 指定http的请求⽅法有HEAD GET POST PUT DELETE
-d 指定要传输的数据
-H 指定http请求头信息
新增索引
curl -XPUT 'localhost:9201/blog_test?pretty'
curl -XPUT 'localhost:9201/blog?pretty'
删除索引
curl -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  ⼩D课堂成⽴于2016年的,专注互联⽹在线教育,课程范围包括前端,后端,⼤数据,⼈⼯智能,开发等"
}'
curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/2?pretty' -d '
{
"title": "test",
"content":"testsfsdfdsfdsf",
"PV":10
}'
{
"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 'localhost:9201/blog/article/_search?q=title:⼩A'
10、search搜索语句⼊门之结构化查询语句DSL
简介:讲解结构化查询语句DSL的使⽤,bool,filter查询等
新增数据集
curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/7?pretty' -d '
{
"title": "elk搭建⽇志采集系统",
"content":"elk elasticsearch logstash kibana",
"PV":18
}'
什么是query DSL
1、Domain Specific Language 领域特定语⾔
2、Elasticsearch提供了完整的查询DSL,基于JSON定义查询
3、⽤于构造复杂的查询语句
curl查询(空格处理不当,会出问题)
curl -XPOST -H "Content-Type: application/json" 'localhost:9201/blog/article/_search' -d '{
"query" : {
"term" : { "title" : "elk" }
}
}'
建议使⽤postman⼯具
post⽅式提交,增加http头信息
body⾥⾯选row格式,粘贴对应的dsl即可
1、⼤部分filter的速度快于query的速度
2、filter不会计算相关度得分,且结果会有缓存,效率⾼
3、全⽂搜索、评分排序,使⽤query
4、是⾮过滤,精确匹配,使⽤filter
章节三  Logstash零基础⼊门到采集⽇志实战
11、Logstash基本介绍和使⽤场景
简介:讲解什么是logstash,⾥⾯的基本⼯作流程input,filter,output等说明
流程讲解
logstash通过管道pipeline进⾏传输,必选的两个组件是输⼊input和输出output,还有个可选过滤器filter        logstash将数据流中等每⼀条数据称之为⼀个event,即读取每⼀⾏数据的⾏为叫做事件
#输⼊
input {
...
}
# 过滤器
filter {
...
}
# 输出
output {
...
}
12、Logstash插件介绍
简介:讲解input,filter和output的插件的基本使⽤
简单的配置 f
#===================================
input {
# 从⽂件读取⽇志信息
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
filter {
}
output {
#标准输出
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-test-%{type}-%{host}"
}
}
#===================================
13、阿⾥云服务器部署Logstash 6.1.2
简介:阿⾥云Centos部署Logstash,⽬录⽂件,配置讲解,基本功能测试
解压:tar -zxvf logstash-6.2.
快速启动(需要java8 jre,⽬前不⽀持java9)
./bin/logstash -e 'input {stdin {}} output {stdout {}}'
jvm.options      修改 xms和xmx为相同,⼀般是系统内存三份之⼆
安卓在线解析json14、Logstash采集输送⽇志input filter output流程测试
简介:讲解Logstash采集⽇志和输送⽇志流程测试,包括input,filter和output元素的测试
bin/logstash -f
./logstash -f ../f
codec的使⽤( Coder/decoder 两个单词⾸字母缩写)
Codec: 解码编码数据格式
好处更⽅便logstash与⽀持⾃定义数据格式的运维产品进⾏使⽤
logstash更细化的处理流程
input->decode->filter->encode->output
配置⼀ f
========================================
input {
# 从⽂件读取⽇志信息输送到控制台
file {
path => "/Users/jack/Desktop/person/elk/elasticsearch-6.1.1/logs/elasticsearch.log"                    #codec => "json" ## 以JSON格式读取⽇志
type => "elasticsearch"
start_position => "beginning"
}
}
# filter {
#
# }
output {
# 标准输出
# stdout {}
# 输出进⾏格式化,采⽤Ruby库来解析⽇志
stdout { codec => rubydebug }
}
========================================
filter使⽤
例⼦

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。