ELK简介:
E:elasticseach 全文检索框架,实时分布式搜索和分析引擎,用于全文搜索、结构化搜索以及分析,接口友好,支持json。
L:logstash 日志数据收集框架,实时渠道能力的数据收集引擎,几乎可以冯文任何数据,可以和多种外部应用结合,支持弹性扩展
logstash 有三部分组成:
K:kibana 报表展示层
使用logstash来采集数据存储到es中,使用kibana展示es索引库中的数据。
elasticseach 与关系型数据库对比
传统数据库:
DB(数据库服务)--databases(库)-- tables(表) -- rows(行) -- columns(列)
elasticseach:
elasticseach--indices(索引库)-- types(类似于表)-- documents (文档对象)-- fields(文件)
ES的核心概念:
index:索引库,我们在ES中创建的一个个索引库类似于我们在mysql创建的数据库。
type:类型,在索引库下边创建的类型,类似于mysql的表。
document:文档,es中一条数据就是一个doucment。
filed:字段,一条document的数据由多个字段组成。
mappings:映射关系,映射filed字段的类型,字段的分词、索引、存储特性。
settings:设置es索引库当中数据的分片数以及副本数。
node:每一个es节点叫做node。
cluster:集群,所有的node组织起来就是集群的概念
es集群安装
es不能使用root启动,添加普通用户
#创建用户
useradd es
#创建用户目录
mkdir -p /home/es
#把用户目录给到改用户
chown -R es /home/es
#设置密码
passwd es 根据提示设置密码
给用户sudo权限,让用户可以执行所有命令
visudo
找到 root ALL。。。。。在下边添加 es ALL=(ALL) ALL 保存
下载地址:
wget https://mirrors.huaweicloud.com/elasticsearch/6.7.0/elasticsearch-6.7.0.tar.gz
解压到安装目录:
tar -zxf elasticsearch-6.7.0.tar.gz -C /home/es/elasticsearch
进入安装目录创建数据文件夹
cd /home/es/elasticsearch/elasticsearch-6.7.0/
mkdir datas
修改安装目录下的配置文件 elasticsearch.yml
安装目录的config目录下
cd /home/es/elasticsearch/elasticsearch-6.7.0/config
#集群名称
cluster.name: my-application
#节点名称
node.name: node01
#数据路径
path.data: /home/es/elasticsearch/elasticsearch-6.7.0/datas
#日志路径
path.logs: /home/es/elasticsearch/elasticsearch-6.7.0/logs
#本机IP
network.host: 192.168.135.131
#访问端口
http.port: 9200
#含哪些集群节点
#改成IP端口 -- 这样写需要配置hosts
discovery.zen.ping.unicast.hosts: ["node01","node02","node03"]
#解决esbug
bootstrap.system_call_filter: false
#是否锁定内存
bootstrap.memory_lock: false
#是否允许跨越
http.cors.enabled: true
http.cors.allow-origin: "*"
启动ES
cd /home/es/elasticsearch/elasticsearch-6.7.0
sudo sysctl -w vm.max_map_count=262144 ##在启动前先调大虚拟内存加速
nohup sh bin/elasticsearch 2>1&
访问地址:
elasticSeach-head安装
需要先装nodejs环境
下载地址:wget https://npm.taobao.org/mirrors/node/v8.1.0/node-v8.1.0-linux-x64.tar.gz
解压到对应目录
tar -zxvf node-v8.1.0-linux-x64.tar.gz -C /home/es/
创建两个软连接
sudo ln -s /home/es/node-v8.1.0-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm |
sudo ln -s /home/es/node-v8.1.0-linux-x64/bin/node /usr/local/bin/node |
配置环境变量
export NODE_HOME=/home/es/node-v8.1.0-linux-x64
export PATH=:$PATH:$NODE_HOME/bin
head启动命令
前端启动:npm run start
守护进程启动:nohup npm run-script start &
kibana 启动nohup sh bin/kibana 2>1 &
nohup sh bin/kibana 2>1 &
//创建一个索引库 blog01
put /blog01?pretty
curl -XPUT http://127.0.0.1:9200/blog01/article/1?pretty -d '{"id":"1","title":"What is lucene"}' -H "Content-Type:application/json"
PUT /blog01/article/1?pretty {"id":"1","title":"What is lucene"}
blog01 索引库
article 表
1 系统id
-d 插入一条数据
-H "Content-Type:application/json" 指定数据类型
//查询
curl -XGET http://localhost:9200/blog01/article/1
GET /blog01/article/1
//搜索 关键字 _search
GET /blog01/article/_search?q=title:What is lucene
删除数据 delete /blog01/article/1
删除索引库 delete /blog01
{
"took" : 29, 查询时长
"timed_out" : false, 是否查询超时
"_shards" : { 查询了哪些分片
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : { 得到哪些数据
"total" : { 一共几条数据
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.5469647,
"hits" : [ 实际数据数组
{
"_index" : "blog01", 索引库
"_type" : "article", 表
"_id" : "2", id
"_score" : 0.5469647,
"_source" : { --数据内容
"id" : "1",
"title" : "What is lucene"
}
}
]
}
}
批量添加 POST /school/student/_bulk
关键字post /库/表/_bulk 批量添加 {"index":{"_id":1}} 数据
{"index":{"_id":1}}
{"name":"haha","age":"20","sex":"boy","about":"I like diaocan he girl"}
{"index":{"_id":2}}
{"name":"diaochan","age":"40","sex":"girl","about":"I like haha he boy"}
{"index":{"_id":3}}
{"name":"haha2","age":"20","sex":"boy","about":"I like diaocan he girl"}
//查询所有
GET /school/student/_search?pretty
{
"query":{
"match_all": {}
}
}
#关键字查询
GET /school/student/_search?pretty
{
"query":{
"match": {
"about": "diaocan"
}
}
}
#复合查询
GET /school/student/_search?pretty
{
"query":{
"bool": {
"must": [
{"match": {
"about": "girl"
}},{"match": {
"sex": "boy"
}}
]
}
}
}