[ElasticSearch基础]--初识ES

   由于很久没有使用ES了,所以打算好好整理下知识,那么下面就按着4W1H法则再次理解和学习ES。希望对初学者或者想了解ES的朋友有所帮助。

一、4H1W

1、ElasticSearch是什么?

标准解释:

Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。
它允许您快速,近实时地存储,搜索和分析大量数据。
它通常用作支持具有复杂搜索功能和需求的应用程序的底层引擎/技术。

ES主要解决问题:

  1. 检索相关数据
  2. 返回统计结果
  3. 速度要快

2、为什么用ElasticSearch?

ES的国内外使用优秀案例
1) 2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。 “GitHub使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码”。
2)维基百科:启动以elasticsearch为基础的核心搜索架构。 
3)SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务”。 
4)百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据。

我们现实生活中,几乎每个系统都会有一个搜索的功能,当搜索做到一定程度时,维护和扩展起来难度就会慢慢变大,所以很多公司都会把搜索单独独立出一个模块,用ElasticSearch等来实现。

近年ElasticSearch发展迅猛,已经超越了其最初的纯搜索引擎的角色,现在已经增加了数据聚合分析(aggregation)和可视化的特性,如果你有数百万的文档需要通过关键词进行定位时,ElasticSearch肯定是最佳选择。当然,如果你的文档是JSON的,你也可以把ElasticSearch当作一种“NoSQL数据库”, 应用ElasticSearch数据聚合分析(aggregation)的特性,针对数据进行多维度的分析。

【知乎:热酷架构师潘飞】ES在某些场景下替代传统DB

个人以为Elasticsearch作为内部存储来说还是不错的,效率也基本能够满足,在某些方面替代传统DB也是可以的,
前提是你的业务不对操作的事性务有特殊要求;而权限管理也不用那么细,因为ES的权限这块还不完善。
由于我们对ES的应用场景仅仅是在于对某段时间内的数据聚合操作,没有大量的单文档请求
(比如通过userid来找到一个用户的文档,类似于NoSQL的应用场景),所以能否替代NoSQL还需要各位自己的测试。 
如果让我选择的话,我会尝试使用ES来替代传统的NoSQL,因为它的横向扩展机制太方便了。

3、什么时候用ElasticSearch?

以下是Elasticsearch可用于的几个示例用例:
(1)您运营一家在线网上商店,让您的客户可以搜索您销售的产品。在这种情况下,您可以使用Elasticsearch来存储您的整个产品目录和库存,并为其提供搜索和自动填充建议。
(2)您希望收集日志或交易数据,并且想要分析和挖掘此数据以查找趋势,统计数据,汇总或异常情况。在这种情况下,您可以使用Logstash(Elasticsearch / Logstash / Kibana堆栈的一部分)来收集,汇总和分析数据,然后使用Logstash将此数据提供给Elasticsearch。一旦数据在Elasticsearch中,您就可以运行搜索和聚合来挖掘您感兴趣的任何信息。
(3)你运行一个价格提醒平台,它允许精明的顾客指定一条规则,例如“我有兴趣购买特定的电子小工具,并且如果在下个月内,任何供应商的小工具的价格低于$ X,我都会收到通知” 。在这种情况下,您可以缩减供应商价格,将其推入Elasticsearch,并使用其反向搜索(Percolator)功能将价格变动与客户查询进行匹配,并最终在发现匹配时将警报推送给客户。
(4)您需要分析/商业智能需求,并且希望快速调查,分析,可视化并针对大量数据提出临时问题(想想数百万或数十亿条记录)。在这种情况下,您可以使用Elasticsearch存储数据,然后使用Kibana(Elasticsearch / Logstash / Kibana堆栈的一部分)来构建自定义仪表板,以便可视化数据对您很重要的各个方面。另外,您可以使用Elasticsearch聚合功能对数据执行复杂的商业智能查询。


4、怎样用ElasticSearch?

点击^=^参考官方博客

5、什么场景可以用ElasticSearch?

通常面临的两个问题

1)新系统开发尝试使用ES作为存储和检索服务器; 
2)现有系统升级需要支持全文检索服务,需要使用ES。 
以上两种架构的使用,以下链接进行详细阐述。 
http://blog.csdn.net/laoyang360/article/details/52227541

一线公司ES使用场景:

1)新浪ES 如何分析处理32亿条实时日志 http://dockone.io/article/505 
2)阿里ES 构建挖财自己的日志采集和分析体系 http://afoo.me/columns/tec/logging-platform-spec.html 
3)有赞ES 业务日志处理 http://tech.youzan.com/you-zan-tong-ri-zhi-ping-tai-chu-tan/ 
4)ES实现站内搜索 http://www.wtoutiao.com/p/13bkqiZ.html


二、ElasticSearch的特点和ElasticSearch的优点

1.分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到。 
2.实时分析的分布式搜索引擎。 

分布式:索引分拆成多个分片,每个分片可有零个或多个副本。集群中的每个数据节点都可承载一个或多个分片,并且协调和处理各种操作; 

负载再平衡和路由在大多数情况下自动完成。 
3.可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。也可以运行在单台PC上(已测试) 
4.支持插件机制,分词插件、同步插件、Hadoop插件、可视化插件等。

三、ES的性能

性能esrally工具(推荐)

使用参考:http://blog.csdn.net/laoyang360/article/details/52155481


四、参考

  • 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  • 源码目录:https://github.com/elastic/elasticsearch
  • 中文社区:https://elasticsearch.cn/article/page-5
  • 官方博客:https://www.elastic.co/blog
  • 工作原理:http://www.shaheng.me/blog/2015/06/elasticsearch--.html


猜你喜欢

转载自blog.csdn.net/high2011/article/details/80096893