处理用千牛导出淘宝数据,供Logstash到Elasticsearch使用。(NodeJS)
var rf=require("fs");
// 加载编码转换模块
//npm install iconv-lite
var iconv = require('iconv-lite');
var fileName = "2017-03-01~2017-05-31";
//读取二进制
var data=rf.readFileSync(fileName+".txt","binary");
//转化GBK格式
var buf = new Buffer(data, 'binary');
var str = iconv.decode(buf, 'GBK');
var newData = handleMS(str);
var oDate = new Date();
writeFile(fileName+newGuid()+".json", newData);
console.log("The END");
//解析数据
function handleMS(data){
var newData = "";
var arr = str.split('\r\n');
//获取客服名称
var callcenter = arr[0];
var customer = "";
for (var i = 7 ; i <arr.length; i++) {
var item = arr[i];
if (item == "") {
continue;
};
var delimiter = '----------------------------';
if (item.indexOf(delimiter) != -1) {
customer = item.split(delimiter)[1];
continue;
};
var cc = item.split('(')[0];
var date = "";item.split('(')[1];
var message = "";
var preMessage =item.split('): ');
if (preMessage.length == 2) {
message = preMessage[1];
var date = item.split(')')[0].split('(')[1];
};
newData += JSON.stringify({who:cc,date:new Date(date),m:message, isCC:cc == callcenter ? 1 : 0})+"\r\n";
}
return newData;
}
//写文件
function writeFile(file, data){
// 把中文转换成字节数组
var arr = iconv.encode(data, 'utf-8');
// appendFile,如果文件不存在,会自动创建新文件
// 如果用writeFile,那么会删除旧文件,直接写新文件
rf.writeFile(file, arr, function(err){
if(err)
console.log("fail " + err);
else
console.log("写入文件ok");
});
}
function newGuid()
{
var guid = "";
for (var i = 1; i <= 32; i++){
var n = Math.floor(Math.random()*16.0).toString(16);
guid += n;
if((i==8)||(i==12)||(i==16)||(i==20))
guid += "-";
}
return guid;
}
Logstash.conf
input {
file {
path => "D:/logstash-5.2.2/testdata/*.json"
start_position => "beginning"
sincedb_path => "D:/logstash-5.2.2/bin/sincedb"
codec => json {
charset => "UTF-8"
}
}
}
filter {
json{
source => "message"
}
mutate
{
remove_field => [ "message","path","@version","@timestamp","host","_id","value"]
}
}
output {
elasticsearch {
action => "index"
hosts => ["http://172.31.2.9:9200/"]
user => "admin"
password => ""
index => "testtbmsdb3"
document_type => "ms"
workers => 1
}
#stdout {
#codec => rubydebug
#codec => json_lines
#}
}
处理用千牛导出淘宝数据,供Logstash到Elasticsearch使用。(NodeJS)的更多相关文章
- ECshop导入淘宝数据包乱码问题解决方法
ECshop在导入淘宝数据包的时候出现数据乱码. 测试版本 ecshop2.73 利用淘宝助手导出一个数据包(.csv),不要一次全部商品导出,最好是将数据包控制在1M左右,因为ecshop对上传文件 ...
- python 脚本开发实战-当当亚马逊图书采集器转淘宝数据包
开发环境python2.7.9 os:win-xp exe打包工具pyinstaller 界面tkinter ============================================= ...
- 用python分析1225万条淘宝数据,终于搞清楚了我的交易行为
大家好,我是黄同学
- PYTHON -转载,获取淘宝数据01
import requests import sys import random api = { 'number':[ 'https://acs.m.taobao.com/h5/mtop.taobao ...
- nvm淘宝源升级安装最新稳定版nodejs
为了在服务器上面升级nodejs,用nvm下载实在太慢了,推荐淘宝源安装命令,非常快能安装好: 第一步: NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mi ...
- python爬取淘宝数据之遇到的问题
1.chormedriver.exe驱动下载地址 https://npm.taobao.org/mirrors/chromedriver 2.跳转网页页面不稳定问题 添加智能等待时间 driver.i ...
- Android 淘宝搜索记录分析及千牛数据库名称关联
一 taobao搜索关键字分析1.导出淘宝数据文件夹.2.搜索search 找到search文件夹.查看里面可疑文件如history_8d4255cc9c9199c6ec3be940936986b9. ...
- 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道
时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了“数据就是业务本身”的地步.这种趋势已经让很多相信数据之力量的企业做出改变.恰逢此时,为了让更多的 ...
- 关于淘宝的数据来源,针对做淘宝客网站的淘宝api调用方法
上次写了个淘宝返利模式的博客,直接被移除首页,不知道何故啊.可能是真的跟技术不太刮边. 众所周知,能够支撑一个网站运营的最基础不是程序写的多么好.也不是有多么牛X的运营人员,最主要的是数据,如果没有数 ...
随机推荐
- 010 处理模型数据(ModelAndView,Map Model,@SessionAttributes)
1.处理数据模型 SpringMVC提供了几种途径出书模型数据 二:ModelAndView 1.介绍 2.index <%@ page language="java" co ...
- Visual Studio 代码补全功能有时候会失效的原因
大部分时候失效是因为你的代码有的地方有错误!!
- Python中 各种数字类型的判别(numerica, digital, decimal)
一. 全角和半角 全角:是指一个全角字符占用两个标准字符(或两个半角字符)的位置. 全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.在全角中 ...
- C#并行编程(2):.NET线程池
线程 Thread 在总结线程池之前,先来看一下.NET线程. .NET线程与操作系统(Windows)线程有什么区别? .NET利用Windows的线程处理功能.在C#程序编写中,我们首先会新建一个 ...
- CSS之文本溢出隐藏,不定宽高元素垂直水平居中、禁止页面文本复制
1.如何让不固定元素宽高的元素垂直水平居中 .center { position: absolute; top: 50%; left: 50%; background-color: #000; wid ...
- python-docx
pip install python-docx 注意不要直接下载docx包 from docx import Document from docx.shared import RGBColor,Inc ...
- u3d 创建元件 预制件 U3d creates component prefabricated parts
u3d 创建元件 预制件 U3d creates component prefabricated parts 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@ ...
- Codeforces.567E.President and Roads(最短路 Dijkstra)
题目链接 \(Description\) 给定一张有向图,求哪些边一定在最短路上.对于不一定在最短路上的边,输出最少需要将其边权改变多少,才能使其一定在最短路上(边权必须为正,若仍不行输出NO). \ ...
- BZOJ.4753.[JSOI2016]最佳团体(01分数规划 树形背包DP)
题目链接 \(Description\) 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 \(\frac{∑pi}{∑si}\) 最大 \(Solution\) 01分数规划,然 ...
- 我的 Sublime Text 2 笔记
作为aptana死忠粉的我,最近由于工作需要最近开始使用sublime,初次使用,就被其秒开的启动速度,简洁的界面设计,无干扰的信息提示所这幅. 俗话说,工欲善其事必先利其器,作为码农,在开始编码之前 ...