热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Elasticsearch和Kibana挖掘邮箱

在上一篇文章中,我曾提到Logstash,Kibana和Elasticsearch(ELK堆栈)这三者是最受欢迎的开源解决方

在上一篇文章中,我曾提到Logstash,Kibana和Elasticsearch(ELK堆栈)这三者是最受欢迎的开源解决方案之一,不仅用于日志管理,还用于数据分析。 在本文中,我将演示如何使用ELK高效地执行大数据分析。 作为参考,让我们获取一些巨大的邮箱数据。 邮件档案可以说是最有趣的社交网络数据之一。 它无处不在,每条信息都可以说明人们之间的交流。 作为组织的CXO,您可能需要分析公司邮件的趋势和模式。

作为参考,我将采用著名的Enron语料库,因为它具有大量的邮件,并且没有任何法律或隐私问题的风险。 该数据将被标准化为Unix邮箱(mbox)格式。 从mbox格式开始,它将再次转换为单个json文件。

获取安然语料库数据

可以以各种格式下载原始格式的完整Enron数据集。 我将从数据集的原始原始形式开始,该数据集本质上是一组文件夹,该文件夹按人和文件夹来组织邮箱的集合。 下面的代码片段将说明在下载并取消存档后的语料库的基本结构。 继续进行一些操作,以使您熟悉它。

C:\> cd enron_mail_20110402\maildir # Go into the mail directoryC:\enron_mail_20110402\maildir>dir # Show folders/files in the current directory
allen-p         crandell-s     gay-r           horton-slokey-t         nemec-g         rogers-b       slinger-rtycholiz-b     arnold-j       cuilla-m       geaccone-t

               ...directory listing truncated...

neal-s         rodrique-r     skilling-j     townsend-j
C:\enron_mail_20110402\maildir> cd allen-p/ # Go into the allen-p folderC:\enron_mail_20110402\maildir\allen-p> dir # Show files in the current directory

_sent_mail         contacts         discussion_threads notes_inboxsent_items         all_documents     deleted_items     inbox
sent               straw 
C:\enron_mail_20110402\maildir\allen-p> cd inbox/ # Go into the inbox for allen-pC:\enron_mail_20110402\maildir\allen-p\inbox> dir # Show the files in the inbox for allen-p

  1. 11. 13. 15. 17. 19. 20. 22. 24. 26. 28. 3. 31. 33. 35. 37. 39. 40.
  2. 44. 5. 62. 64. 66. 68. 7. 71. 73. 75. 79. 83. 85. 87. 10. 12. 14.
  3. 18. 2. 21. 23. 25. 27. 29. 30. 32. 34. 36. 38. 4. 41. 43. 45. 6.


   63. 65. 67. 69. 70. 72. 74. 78. 8. 84. 86. 9.
C:\enron_mail_20110402\maildir\allen-p\inbox> cat 1. # Show contents of the file named "1."Message-ID: <16159836.1075855377439.JavaMail.evans&#64;thyme>Date: Fri, 7 Dec 2001 10:06:42 -0800 (PST)From: heather.dunton&#64;enron.comTo: k..allen&#64;enron.comSubject: RE: West PositionMime-Version: 1.0Content-Type: text/plain; charset&#61;us-asciiContent-Transfer-Encoding: 7bitX-From: Dunton, Heather X-To: Allen, Phillip K. X-cc:X-bcc:X-Folder: \Phillip_Allen_Jan2002_1\Allen, Phillip K.\InboxX-Origin: Allen-PX-FileName: pallen (Non-Privileged).pstPlease let me know if you still need Curve Shift.Thanks,

现在&#xff0c;下一步是将邮件数据转换为Unix mbox格式。 实际上&#xff0c;mbox只是连接的邮件的大型文本文件&#xff0c;可通过基于文本的工具轻松访问。 我已经使用python脚本将其转换为mbox格式。 此后&#xff0c;此mbox文件将转换为ELK兼容JSON格式。 json文件可以在这里找到。 json文件的片段可以在下面找到&#xff1a;

{"index":{"_index":"enron","_type":"inbox"}}

[{"X-cc": "", "From": "r-3-728402-1640008-2-359-us2-982d4478&#64;xmr3.com", "X-Folder": "\\jskillin\\Inbox", "Content-Transfer-Encoding": "7bit", "X-bcc": "", "X-Origin": "SKILLING-J", "To": ["jeff.skilling&#64;enron.com"], "parts": [{"content": "\n[IMAGE]\n[IMAGE]\nJoin us June 26th for an on-line seminar featuring Steven J. Kafka, Senior Analyst at Forrester Research, as he discusses how technology can create more effective collaboration in today&#39;s virtualized enterprise. Also featuring Mike Hager, VP, OppenheimerFunds, offering insights into implementing these technologies through real-world experiences. Brian Anderson, CMO, Access360 will share techniques and provide tips on how to successfully deploy resources across the virtualized enterprise. \nDon&#39;t miss this important event. Register now at http://www.access360.com/webinar/ . For a sneak preview, check out our one-minute animation that illustrates the challenges of provisioning access rights across the \"virtualized\" enterprise.\nAbout Access360\nAccess360 provides the software and services needed for deploying policy-based provisioning solutions. Our solutions help companies automate the process of provisioning employees, contractors and business partners with access rights to the applications they need. With Access360, companies can react instantaneously to changing business environments and relationships and operate with confidence, whether in a closed enterprise environment or across a virtual or extended enterprise.\n \nAccess360 \n\nIf you would prefer not to receive further messages from this sender:\n1. Click on the Reply button.\n2. Replace the Subject field with the word REMOVE.\n3. Click the Send button.\nYou will receive one additional e-mail message confirming your removal.\n\n", "contentType": "text/plain"}], "X-FileName": "jskillin.pst", "Mime-Version": "1.0", "X-From": "Access360 &#64;ENRON", "Date": {"$date": 991326029000}, "X-To": "Skilling, Jeff ", "Message-ID": "<14649554.1075840159275.JavaMail.evans&#64;thyme>", "Content-Type": "text/plain; charset&#61;us-ascii", "Subject": "Forrester Research on Best Practices for the \"Virtualized\" Enterprise"}

当您有大量数据要推送到Elasticsearch中时&#xff0c;最好通过指定数据文件来进行批量导入。 每封邮件都在与指定索引&#xff08;enron&#xff09;和文档&#xff08;收件箱&#xff09;的条目相关的一行中。 无需指定ID&#xff0c;因为Elasticsearch会自动指定ID。

Elasticsearch中的数据可以大致分为两种类型- 精确值全文 。 确切的值正是它们听起来的样子。 示例是日期或用户ID&#xff0c;但也可以包括确切的字符串&#xff0c;例如用户名或电子邮件地址。 例如&#xff0c;精确值Foo与精确值foo不同。 精确值2014与精确值2014-09-15不同。 另一方面&#xff0c;全文是指通常以某种人类语言编写的文本数据&#xff0c;例如推文或电子邮件正文。 出于此练习的目的&#xff0c;最好将电子邮件地址 &#xff08;收件人&#xff0c;抄送&#xff0c;密件抄送&#xff09;视为精确值。 因此&#xff0c;我们首先需要指定映射&#xff0c;可以通过以下方式完成。

curl -XPUT “localhost:9200/enron” -d "{
"settings":
{"number_of_shards": 5,"number_of_replicas": 1
},
"mappings":
{"inbox":{"_all":{"enabled": false},"properties":{"To":{
"type": "string",
"index": "not_analyzed" }, "From": { "type": "string", "index": "not_analyzed" }, "CC": { "type": "string", "index": "not_analyzed" }, "BCC": {"type": "string","index": "not_analyzed" } } } }
}"

您可以验证是否确实设置了映射。

curl -XGET "http://localhost:9200/_mapping?pretty"
{"enron" : {"mappings" : {"inbox" : {"_all" : {"enabled" : false},"properties" : {"BCC" : {"type" : "string","index" : "not_analyzed"},"CC" : {"type" : "string","index" : "not_analyzed"},"From" : {"type" : "string","index" : "not_analyzed"},"To" : {"type" : "string","index" : "not_analyzed"}}}}}
}

现在&#xff0c;以以下方式使用json文件加载所有邮箱数据&#xff1a;

curl -XPOST "http://localhost:9200/_bulk" --data-binary &#64;enron.json

我们可以检查是否所有数据都已成功上传。

curl "localhost:9200/enron/inbox/_count?pretty"
{"count" : 41299,"_shards" : {"total" : 5,"successful" : 5,"failed" : 0}
}

您可以看到已经上传了41299条对应于不同消息的记录。 现在&#xff0c;通过对该数据进行一些分析来开始有趣的部分。 Kibana提供了出色的分析功能和相关图表。 让我们尝试查看每周发送多少消息。

安然日期

上面的直方图显示了每周传播的消息。 日期值以经过纪元的毫秒数为单位。 您可以看到一个特定的星期有3546条消息的高峰。 那个星期一定发生了一些有趣的事情。 现在&#xff0c;让我们看看谁是邮件的主要收件人

安然

您可以看到Gerald&#xff0c;Sara和Kenneth是邮件的顶级收件人。 如何查看最热门的发件人&#xff1f;

来自安然

您可以看到Pete&#xff0c;Jae和Ken是邮件的主要发送者。 如果您想知道Enron员工究竟用来讨论什么&#xff0c;让我们检查一下邮件主题中的热门关键字。

羡慕主体

似乎最有趣的讨论集中在安然&#xff0c;天然气&#xff0c;能源&#xff0c;电力。 使用Enron邮件数据可以进行很多有趣的分析。 我建议您尝试以下方法&#xff1a;

  • 计算特定电子邮件地址的已发送/已接收消息
  • 一条消息的最大收件人数是多少&#xff1f;
  • 哪两个人之间的交流最多&#xff1f;
  • 人对人消息有多少条&#xff1f;

翻译自: https://www.javacodegeeks.com/2016/03/mining-mailboxes-elasticsearch-kibana.html




推荐阅读
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
诚实宝贝2002
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有