开发者学堂课程【ElasticSearch 入门精讲:ES 简介】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/631/detail/9937
ES简介
内容简介
一、ES 的适用场景概述
二、ES 适用场景详解
三、众多工具适配 ES
一、ES 的适用场景概述
1.站内搜索∶
主要和 Sol 竞争,属于后起之秀。
2.NoSQLJson 文档数据库∶
主要抢占 Mongo 的市场,它在读写性能上优于 Mongo,同时也支持地理位置查询,还方便地理位置和文本混合查询。
3.监控∶
统平日志类时间序的数据存储和分析、可视化,这方面是引领者。
4.国外∶
Wikipedia(维基百科)使用ES提供全文搜索并高亮关键字、
StackOverflow(IT 问答网站)结合全文搜索与地理位置查询、Github
使用 Elasticsearch 检索1300亿 Z 行的代码。
5.国内∶
百度(在云分析、网盟、预测、文库、钱包、风控等业务上都应用了 ES,单集群每天导入30TB+数据,总共每天60TB+)、新浪、阿里巴巴、腾讯等公司均有对 ES 的使用。
6.使用比较广泛的平台 ELK(ElasticSearch,Logstash,Kibana)。
二、ES 适用场景详解
了解了 ES 的使用场景,ES 的研究、使用、推广才更有价值和意义。
场景一∶使用 Elasticsearch 作为主要的后端传统项目中,搜索引擎是部署在成熟的数据存储的顶部,以提供快速且相关的搜索能力。这是因为早期的搜索引擎不能提供耐用的存储或其他经常需要的功能,如统计。
场景二∶在现有系统中增加 elasticsearch
由于 ES 不能提供存储的所有功能,一些场景下需要在现有系统数据存储的基础上新增 ES 支持。假设你的在线零售商店的产品信息存储在 SQL 数据库中。为了快速且相关的搜索,你安装 Elasticsearch。为了索引数据,您需要部署一个同步机制,该同步机制可以是 Elasticsearch 插件或你建立一个自定义的服务。
此同步机制可以将对应于每个产品的所有数据和索引都存储在 Elasticsearch,每个产品作为一个 document 存储(这里的 document相当于关系型数据库中的一行/row 数据)。
当在该网页上的搜索条件中输入"用户的类型"。店面网络应用程序通过 Elasticsearch 查询该信息。
Elasticsearch 返回符合标准佳的产品 documents。并根据你喜欢的方式来分类文档。排序可以根据每个产品的被搜索次数所得到的相关分数,或任何存储在产品 document 信息,例如∶最新最近加入的产品、平均得分,或者是那些插入或更新信息。所以你可以只使用 Elasticsearch 处理搜索。这取决于同步机制来保持 Elasticsearch 获取最新变化。
场景三∶使用 elasticsearch 和现有的工具在一些使用情况下,您不必写一行代码就能通过 elasticssearch 完成一项工作。很多工具都可以与 Elasticsearch 一起工作,所以你不必到你从头开始编写。例如,假设要部署一个大规模的日志框架存储,搜索,并分析了大量的事件。处理日志和输出到 Elasticsearch,您可以使用日志记录工具,如rsyslog(www.rsyslog.com)Logstash(www.elastic.co/products/logstash),或ApacheFlume
(http∶/flume.apache.org)。搜索和可视化界面分析这些日志,你可以使用
Kibana(www.elastic.co/产品/kibana)。
举例1:ES 不支持事务、复杂的关系(至少1.X 版本不支持,2.X 有改善,但支持的仍然不好),如果你的系统中需要上述特征的支持,需要考虑在原有架构.原有存储的基础上的新增 ES 的支持。
举例2:如果你已经有个在运行的复杂的系统,你的需求之一是在现有系统中添加检索服务。—种非常雪险的方式是重构系统以支持 ES。而相对安全的方式是∶将 ES 作为新的组件添加到现有系统中。如果你使用了如下图所示的 SQL 数据库和 ES 存储,你需要找到一种方式使得两种存储之间实时同步。需要根据数据的组成、数据库选择对应的同步插件。可供选择的插件包括∶mysql、oracle 选择 logstash-input-jdbc 插件。2)mongo 选择 mongo-connector 工具。
三、众多工具适配 ES
为什么那么多工具适配 Elasticsearch?
主要原因如下∶
1)Elasticsearch 是开源的。
2)Elasticsearch 提供了 JAVAAPI 接口。
3)Elasticsearch 提供了 RESTfulAPI 接口(不管程序用什么语言开发,任何程序都可以访问)
4)更重要的是,REST 请求和应答是典型的 JSON(JavaScript 对象符号)格式。通常情况下,一个 REST 请求包含一个 JSON 文件,其回复也都是一个 JSON 文件。