不具有通用性,留作纪念。

[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(三)的更多相关文章

  1. 【转】python 三种遍历list的方法

    [转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...

  2. Python - 三大器 迭代器,生层器,装饰器

    目录 Python - 三大器 迭代器,生层器,装饰器 一. 容器 二. 可迭代对象(iterable) 三. 迭代器 四. 生成器 五. 装饰器 1. 定义 六. 闭包 Python - 三大器 迭 ...

  3. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

  4. Python三引号(triple quotes)

    python中三引号可以将复杂的字符串进行复制: python三引号允许一个字符串跨多行,字符串中可以包含换行符.制表符以及其他特殊字符. 三引号的语法是一对连续的单引号或者双引号(通常都是成对的用) ...

  5. Python 入门之 Python三大器 之 装饰器

    Python 入门之 Python三大器 之 装饰器 1.开放封闭原则: (1)代码扩展进行开放 ​ 任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代 ...

  6. Python 入门之 Python三大器 之 生成器

    Python 入门之 Python三大器 之 生成器 1.生成器 (1)什么是生成器? 核心:生成器的本质就是一个迭代器 迭代器是Python自带的 生成器程序员自己写的一种迭代器 def func( ...

  7. Python 入门之 Python三大器 之 迭代器

    Python 入门之 Python三大器 之 迭代器 1.迭代器 (1)可迭代对象: <1> 只要具有__ iter __()方法就是一个可迭代对象 (我们可以通过dir()方法去判断一个 ...

  8. python三器一闭

    前言:python三器一闭i 包含 迭代器.生成器.装饰器,闭包 迭代器 概念:迭代器是一种可以记录可迭代对象遍历的位置,迭代器从第一个元素开始访问,直到访问所有元素访问结束,迭代器只会往前,不会后退 ...

  9. Python三引号

    Python三引号:多用作注释.数据库语句.编写 HTML 文本. strs = ''' 使用了三引号的字符串 ''' print (strs) # 在 ‘’‘ 里可以使用转义字符 strs = '' ...

  10. Python 三引号

    Python 三引号 Python 中三引号可以将复杂的字符串进行赋值.高佣联盟 www.cgewang.com Python 三引号允许一个字符串跨多行,字符串中可以包含换行符.制表符以及其他特殊字 ...

随机推荐

  1. gnuplotx轴的logscale显示

    假设数据是这样子的: gnuplot脚本如下: set terminal postscript eps color enhanced set log x set log y set format x ...

  2. 在Linux中安装SEP Client

    1. 下载Symantec_Endpoint_Protection_12.1.5_Linux_Client_EN, 解压其中的sep-deb.zip   2. 若直接sudo ./install.sh ...

  3. HITOJ 2662 Pieces Assignment(状压DP)

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  4. NBUT 1010 魔法少女(DP)

    [1010] 魔法少女 时间限制: 1000 ms 内存限制: 65535 K 问题描述 前些时间虚渊玄的巨献小圆着实火了一把. 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙. ...

  5. Apache Storm 衍生项目之1 -- storm-yarn

    欢迎转载,转载请注明出处,徽沪一郎. 概要 storm是一个近似于实时的计算框架,甩开hadoop上的原生mapreduce计算框架不只一条街.如果能将storm引入到hadoop中,对存储于hdfs ...

  6. javaWeb中servlet开发——过滤器

    servlet开发--过滤器(filter) servlet有三种,分为简单servlet.过滤器servlet.监听servlet 简单servlet是作为一种程序所必须的开发结构保存的,继承htt ...

  7. session配置理解

    session.cache_limiter 指定会话页面所使用的缓冲控制方法,默认为nocache.session.cache_expire 以分钟数指定缓冲的会话页面的存活期,默认为180.此设定对 ...

  8. Maximum Likelihood

    https://en.wikipedia.org/wiki/Maximum_likelihood_estimation http://mathworld.wolfram.com/MaximumLike ...

  9. kuaisupaixu

    #include<stdio.h> void quiksort(int a[],int low,int high) {  int i = low;     int j = high;    ...

  10. mina学习(一)

    Mina:是一个帮助用户开发高性能和高伸缩性网络应用程序的框架 学习地址链接:http://www.cnblogs.com/xuekyo/archive/2013/03/06/2945826.html ...