ELK-Python(三)
不具有通用性,留作纪念。
[root@GXB-CTRLCENTER python]# cat insert_uv.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from datetime import *
from with_conn_to_db import conn_to_mysql
import urllib2,json
import time ###define yestoday 0-24 hours delta part##########
today = date.today()
yestoday = today - timedelta(days=1)
#today = today - timedelta(days=1)
#print today,yestoday
#import sys
#sys.exit()
a = str(yestoday) + ' ' + '00:00:00'
b = str(today) + ' ' + '00:00:00'
#print a,b
timeArray1 = time.strptime(a, "%Y-%m-%d %H:%M:%S")
timeArray2 = time.strptime(b, "%Y-%m-%d %H:%M:%S")
start_time = int(time.mktime(timeArray1)) * 1000
end_time = int(time.mktime(timeArray2)) * 1000 #####define es index and search part########
server = 'http://elk.xkops.com:9200/'
#stat_index = 'client-visit-*'
index='client-*'
#start_time = 1459146210879
#stop_time = 1459147110879
url = server + index + "/_search?pretty=true" query_date={
"query": {
"filtered": {
"query": {
"query_string": {
"analyze_wildcard": True,
"query": "*"
}
},
"filter": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": start_time,
"lte": end_time,
"format": "epoch_millis"
}
}
}
],
"must_not": []
}
}
}
},
"size": 0,
"aggs": {
"": {
"terms": {
"field": "visit_tenant_id",
"size": 1000000,
"order": {
"": "desc"
}
},
"aggs": {
"": {
"sum": {
"field": "count"
}
},
"": {
"terms": {
"field": "client_type",
"size": 2,
"order": {
"": "desc"
}
},
"aggs": {
"": {
"sum": {
"field": "count"
}
},
"": {
"terms": {
"field": "sessionId",
"size": 1000000,
"order": {
"": "desc"
}
},
"aggs": {
"": {
"sum": {
"field": "count"
}
}
}
}
}
}
}
}
}
} query_date = json.dumps(query_date)
req = urllib2.Request(url,query_date)
response = urllib2.urlopen(req)
page = response.read()
#print page
result = json.loads(page) ###避免当天多次插入,插入前先删除#######
sql = "delete from uv_stat where create_time = '%s'" % (yestoday)
#print sql
with conn_to_mysql('logstash') as db:
db.execute(sql) for s in result['aggregations']['']['buckets']:
tenant_id = s['key']
type1 = s['']['buckets'][0]['key']
for a in s['']['buckets'][0]['']['buckets']:
session_id = a['key']
#print tenant_id,type1,session_id
sql = "insert into uv_stat(tenant_id,create_time,session_id,client_type) values('%s','%s','%s','%s')" %(tenant_id,yestoday,session_id,type1)
#print sql
with conn_to_mysql('logstash') as db:
db.execute(sql)
if len(s['']['buckets']) > 1:
type2 = s['']['buckets'][1]['key']
for a in s['']['buckets'][1]['']['buckets']:
session_id = a['key']
#print tenant_id,type2,session_id
sql = "insert into uv_stat(tenant_id,create_time,session_id,client_type) values('%s','%s','%s','%s')" %(tenant_id,yestoday,session_id,type2)
#print sql
with conn_to_mysql('logstash') as db:
db.execute(sql)
else:
continue
ELK-Python(三)的更多相关文章
- 【转】python 三种遍历list的方法
[转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...
- Python - 三大器 迭代器,生层器,装饰器
目录 Python - 三大器 迭代器,生层器,装饰器 一. 容器 二. 可迭代对象(iterable) 三. 迭代器 四. 生成器 五. 装饰器 1. 定义 六. 闭包 Python - 三大器 迭 ...
- Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)
Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...
- Python三引号(triple quotes)
python中三引号可以将复杂的字符串进行复制: python三引号允许一个字符串跨多行,字符串中可以包含换行符.制表符以及其他特殊字符. 三引号的语法是一对连续的单引号或者双引号(通常都是成对的用) ...
- Python 入门之 Python三大器 之 装饰器
Python 入门之 Python三大器 之 装饰器 1.开放封闭原则: (1)代码扩展进行开放 任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代 ...
- Python 入门之 Python三大器 之 生成器
Python 入门之 Python三大器 之 生成器 1.生成器 (1)什么是生成器? 核心:生成器的本质就是一个迭代器 迭代器是Python自带的 生成器程序员自己写的一种迭代器 def func( ...
- Python 入门之 Python三大器 之 迭代器
Python 入门之 Python三大器 之 迭代器 1.迭代器 (1)可迭代对象: <1> 只要具有__ iter __()方法就是一个可迭代对象 (我们可以通过dir()方法去判断一个 ...
- python三器一闭
前言:python三器一闭i 包含 迭代器.生成器.装饰器,闭包 迭代器 概念:迭代器是一种可以记录可迭代对象遍历的位置,迭代器从第一个元素开始访问,直到访问所有元素访问结束,迭代器只会往前,不会后退 ...
- Python三引号
Python三引号:多用作注释.数据库语句.编写 HTML 文本. strs = ''' 使用了三引号的字符串 ''' print (strs) # 在 ‘’‘ 里可以使用转义字符 strs = '' ...
- Python 三引号
Python 三引号 Python 中三引号可以将复杂的字符串进行赋值.高佣联盟 www.cgewang.com Python 三引号允许一个字符串跨多行,字符串中可以包含换行符.制表符以及其他特殊字 ...
随机推荐
- java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)
最近在做数据挖掘的课程设计,需要将数据分析的结果很直观的展现给用户,这就要用到数据统计图,要实现这个功能就需要几个第三方包了: 1. jfreechart-1.0.13.jar 2. ...
- Odoo Auto Backup Database And Set Linux task schedualer
First ,Write Database Backup Script: pg_dump -Fc yourdatabasename > /home/yourfilepath/yourdataba ...
- git客户端初始化
安装git客户端:[root@super67 ~]# yum install -y git 配置git信息:[root@super67 ~]# git config --global user.nam ...
- 三、saltstack证书管理
192.168.1.65 super65.cn master192.168.1.66 super66.cn minion saltstack使用SSL签证的方式进行安全认证. minion上线 ...
- maven 将依赖的jar包打入jar包中
pom中加入以下代码,利用mvn assembly:assembly就可以了. <build> <plugins> <plugin> <artifactId& ...
- Intent学习笔记
Intent首先字面意思大概是意图.负责activity之间或者,activity与service等(我只知道这么点)之间信息的传递.就跟快递员起的作用差不多(我这这么理解),由一下六部分组成: Co ...
- Nodejs - windows的系统变量(环境变量)
我的电脑-属性-高级-环境变量-系统变量(s)-Path 将Node.exe所在的路径插入Path的变量值(V)中 如 ;E:\nodejs\ 最终效果 C:\Windows\system32;C:\ ...
- Apache POI使用详解
Apache POI使用详解 1.POI结构与常用类 (1)POI介绍 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案 ...
- Bootstrap学习笔记1
Bootstrap在线手册 http://v3.bootcss.com,这里有详细的说明.参考.示例. Bootstrap为许多前端常用的功能都做了封装.预定义,可以直接使用. Bootstrap支持 ...
- 20145235 《Java程序设计》第9周学习总结
第十六章 整合数据库 JDBC Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Ja ...