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. 外部函数/external

    定义在moodle/lib/externallib.php 概观 外部函数API允许您创建可由外部程序(如Web服务API)访问的完全参数化的方法. 外部函数位于externallib.php文件中. ...

  2. 18,EasyNetQ-使用替代DI容器

    EasyNetQ由独立组件组成. 它在内部使用称为DefaultServiceProvider的小型内部DI(IoC)容器. 如果您查看用于创建核心IBus接口实例的静态RabbitHutch类的代码 ...

  3. 9,EasyNetQ-版本化消息

    要启用对版本化消息的支持,您需要确保配置所需的组件. 最简单的方法是: var bus = RabbitHutch.CreateBus( "host=localhost", ser ...

  4. Nutch源码阅读进程4

    前面依次看了nutch的准备工作inject和generate部分,抓取的fetch部分的代码,趁热打铁,我们下面来一睹parse即页面解析部分的代码,这块代码主要是集中在ParseSegment类里 ...

  5. Jekyll搭建github个人博客

    一.安装ruby环境 Windows下载地址: http://rubyinstaller.org/ Ruby官网: http://www.ruby-lang.org/zh_cn/ 下载安装即可 环境配 ...

  6. POJ 3243 Clever Y 扩展BSGS

    http://poj.org/problem?id=3243 这道题的输入数据输入后需要将a和b都%p https://blog.csdn.net/zzkksunboy/article/details ...

  7. BZOJ.3598.[SCOI2014]方伯伯的商场之旅(贪心 数位DP)

    题目链接 先考虑,对于确定的一个数,怎样移动代价最少(或者移到哪个位置最优)? 假设我们都移到下标\(1\)位置(设集合点为\(1\)),那么移动到下标\(2\)与\(1\)相比代价差为:\(下标&l ...

  8. JavaScript原型之路

    简介 最近我在学习Frontend Masters 上的高级JavaScript系列教程,Kyle 带来了他的“OLOO”(对象链接其他对象)概念.这让我想起了Keith Peters 几年前发表的一 ...

  9. vs配置TFS

  10. 彻底放弃没落的MFC,对新人的忠告! by FreeWick

    完全没想到10多年后还有人纠结要不要学MFC,我花点时间给新人们一个总结. 第1种观点 学习完MFC,你会更理解编程的思想,再学别的语言就更快了. 话说小白要去美国学技术,大黑劝他说:“你为什么不先到 ...