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

  1. ECshop导入淘宝数据包乱码问题解决方法

    ECshop在导入淘宝数据包的时候出现数据乱码. 测试版本 ecshop2.73 利用淘宝助手导出一个数据包(.csv),不要一次全部商品导出,最好是将数据包控制在1M左右,因为ecshop对上传文件 ...

  2. python 脚本开发实战-当当亚马逊图书采集器转淘宝数据包

    开发环境python2.7.9 os:win-xp exe打包工具pyinstaller 界面tkinter ============================================= ...

  3. 用python分析1225万条淘宝数据,终于搞清楚了我的交易行为

    大家好,我是黄同学

  4. PYTHON -转载,获取淘宝数据01

    import requests import sys import random api = { 'number':[ 'https://acs.m.taobao.com/h5/mtop.taobao ...

  5. nvm淘宝源升级安装最新稳定版nodejs

    为了在服务器上面升级nodejs,用nvm下载实在太慢了,推荐淘宝源安装命令,非常快能安装好: 第一步: NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mi ...

  6. python爬取淘宝数据之遇到的问题

    1.chormedriver.exe驱动下载地址 https://npm.taobao.org/mirrors/chromedriver 2.跳转网页页面不稳定问题 添加智能等待时间 driver.i ...

  7. Android 淘宝搜索记录分析及千牛数据库名称关联

    一 taobao搜索关键字分析1.导出淘宝数据文件夹.2.搜索search 找到search文件夹.查看里面可疑文件如history_8d4255cc9c9199c6ec3be940936986b9. ...

  8. 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道

    时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了“数据就是业务本身”的地步.这种趋势已经让很多相信数据之力量的企业做出改变.恰逢此时,为了让更多的 ...

  9. 关于淘宝的数据来源,针对做淘宝客网站的淘宝api调用方法

    上次写了个淘宝返利模式的博客,直接被移除首页,不知道何故啊.可能是真的跟技术不太刮边. 众所周知,能够支撑一个网站运营的最基础不是程序写的多么好.也不是有多么牛X的运营人员,最主要的是数据,如果没有数 ...

随机推荐

  1. Codeforces 160D Edges in MST tarjan找桥

    Edges in MST 在用克鲁斯卡尔求MST的时候, 每个权值的边分为一类, 然后将每类的图建出来, 那些桥就是必须有的, 不是桥就不是必须有. #include<bits/stdc++.h ...

  2. BZOJ1076 [SCOI2008]奖励关 概率 状态压缩动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1076 题意概括 有n个东西,k次扔出来.每次等概率扔出其中一个. 你可以拿这个东西,但是有条件,得 ...

  3. AndrodStudio报错: Cannot launch AVD in emulator.

    Cannot launch AVD in emulator.Output:Hax is enabledHax ram_size 0x60000000HAX is working and emulato ...

  4. BootstrapTable使用实例

    一.bootstrapTable简单使用: <link rel="stylesheet" href="./static/libs/bootstrap/css/boo ...

  5. Ubuntu18.04更换国内源

    Ubuntu18.04更换国内源 Ubuntu本身的源使用的是国内的源,下载速度比较慢,不像CentOS一样yum安装的时候对镜像站点进项选择, 所以选择了更换成国内的源. 以下内容整合自网络 备份/ ...

  6. python魔法方法-比较相关

    在python2.x的版本中,支持不同类型的比较,其比较原则如下: 内置类型: 1.同一类型:   1.1)数字类型:包含int.float.long.complex.bool(bool类型是int的 ...

  7. 安装android studio&flutter

    参考:https://flutterchina.club/setup-windows/ 1.安装jdk 2.android studio下载地址  https://developer.android. ...

  8. Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, etc

    Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, ...

  9. [Coding Study]——目录

    Coding Study Source Code for cnblogs This is the source code for coding study, you can see my Coding ...

  10. BZOJ.4319.[cerc2008]Suffix reconstruction(后缀数组 构造 贪心)

    题目链接 \(Description\) 给定SA数组,求满足SA[]的一个原字符串(每个字符为小写字母),无解输出-1. \(Solution\) 假设我们现在有suf(SA[j]),要构造suf( ...