第壹部分:Elasticsearch

一 、Elasticsearch增删改查
1、数据写入:
HTTP method:POST
URL:http://127.0.0.1:9200/index-docs-name/data-type-name -d "{jsonstr}"
返回:{"_index":"index-name","_type":"typename","_id":"idstr","_version":"1","created":"true"}

2、数据获取:
HTTP method :GET
URL:http://127.0.0.1:9200/index-docs-name/data-type-name/id
返回:数据的json结构

3、数据删除:
HTTP method :DELETE
URL:http://127.0.0.1:9200/index-docs-name/data-type-name/id
或者:http://127.0.0.1:9200/index-docs-name(可以使用通配符)删除多个文档

4、数据更新:
(1)全量再次写入
HTTP method:POST
URL:http://127.0.0.1:9200/index-docs-name/data-type-name/id -d "{jsonstr}"
返回:{"_index":"index-name","_type":"typename","_id":"idstr","_version":"1","created":"true"}
(2)局部更新:
HTTP method:POST
URL:http://127.0.0.1:9200/index-docs-name/data-type-name/id/_update -d "{jsonstr}"

5、数据查询
(1)全文搜索
HTTP method : GET
URL : http://127.0.0.1:9200[/index-docs-name/data-type-name]/_search[?q=xxx] -d "{json}"
(2)聚合请求:
在查询的search输入的结构体中写聚合语句即可。

二、Elasticsearch新建模板

请求方式--PUT
请求地址a.b.c.d:9200/_template/your_temp_name
模板:
{
"template":"whoisinfo",#这里是模板的名字,索引名字一样自动适配。
"order":"7",#这里是模板号
"state":"open",
"settings": {
"index": {
"creation_date": "1491451435658",
"number_of_shards": "5",#自己控制
"number_of_replicas": "1",#自己控制
"uuid": "0GCKTzVTRAaw-z47TfCaZQ",
"version": {
"created": "2030399"
}
}
}
"mapping":{
"domain":{#这里是这个模板下第n类数据的样子
"properties":{
"colunm_name":{
"index":"not_analyzed"
"type":"date/string……"
"format":"strict_date_optional_time||epoch_millis"#这里是时间格式
}
}
}
}
}

三、Elastincsearch索引与映射

(一)、映射
1、创建
Method : PUT
URL : http://127.0.0.1:9200/index-docs-name/_mappind -d "{jsonstr}"
2、新增字段
Method : PUT
URL : http://127.0.0.1:9200/index-docs-name/_mappind/mapping-name -d "{jsonstr}"
3、删除映射会删除数据
Method : DELETE
URL : http://127.0.0.1:9200/index-docs-name/_mappind/mapping-name
4、获取映射
Method : GET
URL : http://127.0.0.1:9200/index-docs-name/_mappind/mapping-name

(二) 、 常见的字段定义
type 数据类型
index 是否分词(not_analyzed)
format 格式
多重索引
"name":{
"type":"xxxxx"
"fields"::{"xxx":"xxxx"}
}

四、Elasticsearch 分页查询

第一步创建Elasticsearch对象
es = Elasticsearch([{'host':'192.168.1.103','port':9200}])

第二部创建分页机制
resp = es.search(index, body=query, scroll="24h",size=10000)
24h 是scrollid 有效时间
scroll_id = resp['_scroll_id'] id就是标识
total = resp["hits"]["total"] 总量

第三分页获取数据
resp = es.scroll(scroll_id=scroll_id, scroll="24h")
rdoc = resp["hits"]["hits"]
scroll_id = resp['_scroll_id']
rdoc是每个数据项字典结构体的list

第贰部分:LogStash

一、logstash的安装
#step-one:依赖于java jdk 所以预先安装JDK
1、下载jdk 首选1.7
2、tar xzvf jdk-7u55-linux-x86.tar.gz
3、mkdir /usr/lib/jvm
4、mv jdk1.7.0_55 /usr/lib/jvm/
5、gedit ~/.bashrc
在末尾输入一下内容并保存退出
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_55
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
6、source ~/.bashrc(多个账户下)
#step-two:安装logstash
1、方法1--源代码安装
wget https://download.elastic.co/logstash/logstash/logstash-1.5.1.tar.gz
tar zxvf logstash-1.5.1.tar.gz
mv logstash-1.5.1 logstash
cd ./logstash/
测试语句:bin/logstash -e 'input { stdin { } } output { stdout {} }'
配置测试语句:
bin/logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'
2、方法2--elasticsearch官方仓库安装
wget -O http://packages.elasicsearch.org/GPG-KEY-elasticsearch | apt-key add -cat >> /etc/apt/sources.list
deb http//packages.elasticsearch.org/logstash/1.5/debian stable main
apt-get update
apt-get install logstash

二、按照logstash配置文件运行logstash
bin/logstash -f logstash.conf

三、配置文件logstash.conf示例
input {
stdin{ }
}
output{
stdout{ codec => rubydebug }
elasticsearch { embedded => true }
}

四、配置语法:
1、第一个概念:区段,也就是上文中的input 或者output都是一个区段
#区段之内定义键值对#
2、数据类型
(1)布尔型 true 和 false
(2)字符串 "hostname"
(3)数值 514
(4)数组 [] 类似python中的队列
(5)哈希 match => { key1 => "value1" , key2 => "value2" }

3、语法规则
(1)字段读取支持倒序下标 例如a[-1]
(2)条件判断if / else if / else
(3)判断操作符 != , == , < ,> ,<= ,>= ,=~ ,!~ ,in ,not in , and ,or ,nand ,xor, !{}

4、命令行参数
-e 执行
-f 配置文件
-l 错误日志的输出文件
-P 加载插件\
--verbose 输出一定到调试日志
--debug 输出更多调试信息

五、logstash的处理过程
|filtername |xxx
<inputname <logA
>outputname >elasticsearch

logstash处理的是事件,事件的流转过程;
输入 -》 过滤 -》 输出

六、plugin命令:
查看本机有多少插件可用 plugin list
安装插件 plugin install xxxx
升级插件 plugin update xxx

七 logstash运行
1、服务模式
services logstash start
2、nohup模式
nohup logstash -f ./logstash.conf &
3、screen模式(避免用户退出命令行到哦之程序退出
screen -dmS elksc1
screen -r elksc1
screen list

八、标准输出入
input {
stdin{
add_field => {"key" => "value"}
codec => plain
tags => {"add"}标签
type => "std"类型
}
}
九、文件输入
input {
file {
path => ["fiel1","file2",...]
type => "systen"
start_position => "beginning"duqushujuweizhi
#discover_interval 每隔多久去检查下path选的下新文件 默认15s
#execlude 排出文件 list
#sincedb/sincedb_write_interval
#start_interval 每隔多久监听下新文件
}
}
十、TCP 输入:
input {
tcp {
port => 8888
mode => server
ssl_enable => false
}
}
网络导入旧数据时候常用 与nc配合
nc 127.0.0.1 8888 < olddata

十一、syslog输入:
input {
syslog {
port => "514"
}
}

十二、collectd输入:
input {
collectd {
port => 25289
type => colletced
}
}

十三、Codec
1、json
codec => "json"
注意对于nginx日志 可以把-替换成0
2、多行事件编码
codec => multiline {
pattern => "^\["
negate => true
waht => "previous"
}
3、网络流编码:
codec => netflow {
definitions => "/opt/logstash-1.4.2/lib/logstash/codec/netflow/netflow.yaml"
version => [5]
}

十四、时间处理:
filter {
gork {
match => ["message","%{HTTPDATE:logdate}"]
}
date {
match => ["logdate","dd/MMM/yyyy:HH:mm:ss Z"]
}
}
gork 正则捕获
语法
gork {
match => {
"message"=> "%{WORD} {NUMBER:request_time:float} %{WORD}"
}
}

最佳实践
match => {"message"=>"%{SYSLOGBASE} %{DATA:message}"}

ELK基础学习的更多相关文章

  1. ELK-6.5.3学习笔记–elk基础环境安装

    本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...

  2. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  3. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  4. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  5. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  6. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  7. python入门到精通[二]:基础学习(1)

    摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...

  8. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  9. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

随机推荐

  1. kettle7.1无法从Mongo中读取数据

    今天使用kettle读取mongo数据库时,刚开始一直无法读取数据: 在配置项中偶然选择了一个nearest然后成功了,麻蛋. 然后百度查询了下Read Reference是干嘛的,原来是读取源的模式 ...

  2. golang http.Redirect()函数容易误解的地方

    调用http.Redirect()函数后,并不会立刻进行跳转,而是继续顺序执行函数中的所有的代码后,再进行跳转.但是Redirect后面的写界面的代码不会发送到游览器前端的. 代码如下:func Ch ...

  3. hdu 1595 find the longest of the shortest(dijstra + 枚举)

    http://acm.hdu.edu.cn/showproblem.php?pid=1595 大致题意: 给一个图.让输出从中删除随意一条边后所得最短路径中最长的. . 思路: 直接枚举每条边想必是不 ...

  4. Entity Framework应用:使用LINQ操作

    一.什么是LINQ TO EntitiesLINQ,全称是Language-INtegrated Query(集成语言查询),是.NET语言中查询数据的一种技术.LINQ to Entities是一种 ...

  5. 为iframe添加鼠标事件

    1.关于iframe标签 使用iframe元素会创建包含另外一个文档的内联框架(即行内框架).所以我们可以使用iframe标签,在一个页面嵌入另一个页面.通过指定iframe的src为另一个页面的路径 ...

  6. js元素绑定事件

    想给一个元素绑定一个方法之后,在绑定一个方法而且不被覆盖 window.onload = function () { alert('a'); } window.onlaod=function(){ a ...

  7. JS下拉图片Demo3

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. UML总结---UML中的事物和关系

    UML中的事物 名称 说明 图形 类 相同属性方法的集合 接口 类或组件提供的,可以完成特定功能的一组操作的集合 协作 合作的动作 用例 系统的一个功能 节点 代表可计算的资源 活动类 有多个线程的类 ...

  9. VMWare 回收磁盘空间

    两部分内容: 1) 实际操作体验下在vmware player里回收guest vm的磁盘空间,还给host: 2)顺便把之前的笔记翻出来关于vmware unmap/reclaim, 对照总结. 1 ...

  10. array、isset、三元运算符、find()

    array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法 if(isset($_GET['id'])) { // 根据i ...