Elasticsearch能干什么,关于Elasticsearch及实例应用

个人Elasticsearch系列文章,逐渐更新中,欢迎关注
0A.关于Elasticsearch及实例应用
00.Solr与ElasticSearch对比
01.ElasticSearch能作什么?
02.Elastic Stack功能介绍
03.如何安装与设置Elasticsearch API
04.若是经过elasticsearch的head插件创建索引_CRUD操做
05.Elasticsearch多个实例和head plugin使用介绍node

简单介绍一下Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它可让你快速和近乎实时地存储、搜索和分析海量的数据。它一般被用做底层引擎/技术,为具备复杂搜索功能和需求的应用程序提供动力。Elasticsearch在Lucene StandardAnalyzer之上提供了一个分布式系统,用于索引和自动类型猜想,并利用基于JSON的REST API来引用Lucene的功能。算法

Elasticsearch开箱即用,他的默认值已经调整到最优,并把复杂性隐藏起来,不会让初学者看到复杂的内核。它有一个很短的学习曲线来掌握基础知识,因此任何人只要稍加努力,均可以很快掌握它。数据库

快速上手教程搭建能够看这篇:Elasticsearch初学终极教程: 从零到一segmentfault

在消费者从电商网站目录搜索产品信息的状况下,面临着产品信息检索时间长等问题。这致使用户体验不佳,反过来又会错过潜在客户。现在,企业正在寻找替代的方式,将海量的数据存储在这样的方式,以快速检索。
这能够经过采用NOSQL而不是RDBMS(关系型数据库管理系统)存储数据来实现。

Elasticsearch做为一个NOSQL数据库,由于它具备如下特色。后端

  • 它易于使用
  • 拥有一个伟大的社区
  • 与JSON的兼容性
  • 普遍的用例

后端组件
为了更好地了解Elasticsearch及其使用方法,对主要的后台组件有一个大体的了解是很好的。安全

节点
节点是一个单一的服务器,它是集群的一部分,存储咱们的数据,并参与集群的索引和搜索功能。就像集群同样,节点由一个名字来标识,默认状况下,这个名字是一个随机的通用惟一标识符(UUUID),在启动时分配给节点。咱们能够根据须要编辑默认的节点名称。服务器

集群
集群是一个或多个节点的集合,这些节点共同承载着你的整个数据,并提供联合索引和搜索功能。能够有N个具备相同集群名称的节点。
Elasticsearch 在分布式环境中运行:经过跨群集复制,一个辅助群集能够做为热备份而自动启动。网络

索引
索引是一个具备类似特征的文档的集合。例如,咱们能够有一个特定客户的索引,另外一个索引是针对特定客户,另外一个索引是针对产品信息,另外一个索引是针对不一样类型的数据。在执行索引搜索、更新和删除操做时,一个索引会有一个惟一的名称来标识。在一个集群中,咱们能够根据本身的须要定义任意多的索引。索引相似于RDBMS中的数据库。ssh

文档
文档是一个基本的信息单位,能够编制索引。例如,你能够有一个关于你的产品的索引,而后是一个单一客户的文档。这个文档是用JSON(JavaScript Object Notation)表示的,这是一种无处不在的互联网数据交换格式。比喻为DB中的单一原始数据。
在一个索引中,你能够存储尽量多的文档,这样,在同一个索引中,你能够有一个单一产品的文档,另外一个是单一订单的文档。机器学习

碎片和副本
Elasticsearch 提供了将你的索引细分为多个碎片的能力。当你建立一个索引时,你能够简单地定义你想要的碎片数量。每一个碎片自己就是一个功能齐全且独立的 "索引",能够托管在集群中的任何节点上。
碎片很重要,由于它容许横向分割你的数据量,也可能在多个节点上进行平行化操做,从而提升性能。碎片也能够经过将你的索引的多个副本变成复制的碎片来使用,这在云环境中能够提供高可用性。

弹性堆栈
虽然搜索引擎的核心是搜索引擎,但用户开始使用Elasticsearch作日志,但愿可以方便地摄取和可视化。Elasticsearch、Logstash、Kibana是弹性堆栈的主要组成部分,被称为ELK。

Kibana
Kibana可让你将Elasticsearch数据可视化,并对Elastic Stack进行导航。你能够经过一个问题开始选择给数据定型的方式,找出交互式可视化将引导你的数据走向。你能够从经典的图表(直方图、折线图、饼状图、太阳图等)开始,也能够设计本身的可视化,在任何地图上添加Geo数据。
你还能够进行高级的时间序列分析,在数据中找到可视化关系,并利用机器学习功能探索异常状况。更多详情请看官方页面。

1_rEYnHEQOHna7UwvGtNk_JQ.jpg

Kinbana控制台

Logstash

Logstash是一个开源的服务器端数据处理流水线,它能够同时从众多的数据源中摄取数据,并对其进行转换,而后发送至收集。

数据每每是分散在许多系统中,或者说是分散在许多系统中的多种格式的数据。在Logstash上能够摄取日志、度量衡、Web应用、数据存储和各类AWS服务的数据,全部这些数据都是以连续流的方式进行摄取。它能够与Netflow等不一样的模块一块儿使用,以得到对网络流量的洞察力。

它经过识别命名的字段来创建结构,动态地转换和准备数据,不管格式如何,它都能动态地转换和准备数据,并将其转换为收敛到一个通用的格式。您可使用X-Pack中的监控功能来深刻了解您的Logstash部署的指标。在概览仪表板中,您能够看到Logstash接收和发送的全部事件,以及关于内存使用状况和正常运行时间的信息。而后,您能够向下钻,查看有关特定节点的统计信息。更多详情请查看官方页面。

1_zNZvLjNgbqljkeJ_7fG1dA.png
logstash node stats

Elasticsearch用例
Elasticsearch的使用方式多种多样,我很难捕捉到全部最有趣的用例。为了简单起见,我选择了三大类和三大公司的用例,若是你想了解更多,能够看看他们的用例页面。

主要的数据存储。创建可搜索的目录、文档存储和日志系统。
补充技术:在SQL、mongoDB中添加可视化功能,将索引和搜索投向Hadoop,或者在kafka中添加处理和存储。

补充技术:添加技术。在Elasticsearch中已经有日志的状况下,能够添加度量、监控和分析功能。

Netflix
Netflix的消息传递系统背后使用的是Elasticsearch。消息传递系统分为如下几类。

  • 当你加入该服务时,你会收到的消息。
  • 一旦人们加入后,他们会收到关于他们可能喜欢的内容或服务器上的新功能的消息。
  • 一旦他们经过机器学习算法对你有了更多的了解,他们就会发送更多关于你可能喜欢或喜欢看的内容的个性化消息。
  • 若是你决定离开服务,他们会告诉你如何回来。

这都是经过电子邮件、应用推送通知和短信来完成的。为了有效地完成这些工做,他们须要几乎在第一时间知道信息传递过程当中可能出现的问题。基于这个缘由,Elasticsearch被引入了消息生命周期(以前他们使用的是分布式grep)。
简而言之,每一个状态消息都被记录在Elasticsearch上,适当的团队能够经过在Kibana上写一个查询来过滤每一个类别。
假设有一部新的电影被推出,在这种状况下,"新标题 "消息必须传递给全部客户。

使用Kibana,他们能够实时看到有多少人收到了新消息的通知,以及消息传递的成功率。他们还能够验证一些消息传递失败的缘由。这就引入了调查和处理问题的能力,好比2012年巴西的高信息发送失败率的问题。
经过使用Kibana中的饼状图,他们几乎可以在瞬间发现大量无效的会员失败。经过与国家提供商的跟进,他们发现,7月29日,巴西许多地区的全部现有手机号码的左边都增长了数字9,而无论以前的初始数字是多少,他们都会在7月29日将数字9添加到全部的手机号码中。这一变化是为了增长像圣保罗这样的大都市地区的号码容量,从而消除了该地区长期存在的可用号码短缺问题。
多亏了Elasticsearch,他们才有能力在近乎实时的状况下发现全部这些故障,并及时与供应商跟进。

Tinder

这是一个大型科技公司与Elasticsearch社区相互合做的例子。
Tinder的核心是一个搜索引擎。它的搜索查询很复杂,有两位数的事件,有上百个国家,有50多种语言。
大多数用户的交互都会触发Elasticsearch查询。
根据地域的不一样,Tinder有不一样的交互方式。例如在亚洲,他们也会把它做为语言交流或搜索导游的方式。
因为这个缘由,Tinder中的查询是很是复杂的。他们必须是。

  • 个性化:机器学习算法在这方面也获得了应用。
  • 基于位置:根据你在某个时间点上的位置来寻找匹配。
  • 双向性:要知道哪些用户会在对方身上扫码,基本上是匹配的。
  • 实时性:就是实时性。整个交互必须在几毫秒内发生,来自于海量的用户,而且每个用户都有不少变量关联。

考虑到全部这些功能,后端现实是很是复杂的,从数据科学和机器学习,到双向排名和地理定位,都是很是复杂的。Elasticsearch的基石是让这些组件以一种很是有效的方式共同工做。

在这种状况下,性能是一个障碍。为此,他们一直在与Elasticsearch团队合做,对不少参数进行微调,解决BUG。经过这种方式,他们一直在支持Elasticsearch社区,在改善Tinder自己的用户体验的同时,也帮助提高了整个Elastic stack产品的性能。

思科商业交付平台
Elasticsearch是在2017年推出的,当时他们升级了商业平台。他们从RDBMS切换到Elasticsearch,缘由以下。

  • 添加容错工做在主动/主动模式下工做。RDBMS不是分布式的,不具备容错性。
  • 基于排名和类型超前 搜索来自多个数据库的数据,在30/40个属性上搜索,以得到亚秒级响应。
  • 全局搜索:若是在搜索中没有指定特定对象,搜索引擎将针对多个对象查找结果。

思科情报部
一言以蔽之,思科情报部或Cisco Talos就是防止恶意软件和垃圾邮件在 "互联网管道 "中过分饱和的部门。

在这个思科部门,他们天天都会查看超过150万个恶意软件样本。恶意有效载荷和垃圾邮件占全部电子邮件流量的86%(天天超过6000亿封电子邮件)。
Talos的威胁情报团队是发现网络上新的全球范围内的漏洞并找出真正的坏人的人。

他们经过分析ssh终端和路由器蜜罐的流量模式,收集异常行为,如使用蛮力攻击来猜想用户和密码的企图登陆等,来检测新的漏洞。经过这种方式,他们记录了攻击者登陆后使用的命令,记录了攻击者在登陆后使用的命令,记录了他们从服务器上下载和上传的文件(虽然很难相信,但互联网上的大多数凭证都是像行密码和用户名admin这么简单)。

就是他们在2015年阻止了所谓的SSHPsychos组织。这个组织经过从特定类别的IP产生SSH蛮力登陆尝试,在整个互联网上产生大量的扫描流量,这是众所周知的。一旦他们可以以root身份进入服务器,他们就在下载并安装DDoS根基程序。
自2017年以来,他们使用logstash和kibana来检测和分析可能的全球规模线程。

结论
Elasticsearch是一个分布式、RESTful和分析性搜索引擎,可以解决各类问题。
许多公司都在切换到它,并将其集成到当前的后端基础设施中,由于:

  • 它容许使用聚合功能放大到你的数据,并对数十亿条日志线进行分析。
  • 它结合了不一样类型的搜索:结构化搜索、非结构化搜索、Geo搜索、应用搜索、安全分析、度量衡和日志。
  • 它的速度很是快,它能够在你的笔记本电脑上以一样的方式运行,只需一个节点,也能够在有数百台服务器的集群上运行,使得原型设计很是容易。
  • 它使用标准的RESTful APIs和JSON。社区还用Java、Python、.NET、SQL、Perl、PHP等多种语言构建和维护客户端。
  • 经过使用Elasticsearch-Hadoop(ES-Hadoop)链接器,能够将Elasticsearch的实时搜索和分析功能应用到你的大数据上。
  • 像Kibana和Logstash这样的工具可让你经过使用图表和执行颗粒化搜索,以很是简单和直接的方式让你的数据变得有意义。

在这篇文章中,咱们只是简单介绍了Elasticsearch的能力和用例,以及可以解决的各类业务挑战。若是你有兴趣了解更多,或者想测试一下,请看一下他们的产品页面和教程。若是你想了解如何从零搭建Elasticsearch,推荐你看这篇教程,写的很全面。

相关文章
相关标签/搜索