• 那是从何处传来的钟声呢?偶尔听到那钟声,平添一份喜悦与向往之情。

Elasticsearch的使用场景深入详解

后端 Nanait 5年前 (2019-05-13) 1405次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

了解了 ES 的使用场景,ES 的研究、使用、推广才更有价值和意义。

1、场景—:使用 Elasticsearch 作为主要的后端

传统项目中,搜索引擎是部署在成熟的数据存储的顶部,以提供快速且相关的搜索能力。这是因为早期的搜索引擎不能提供耐用的​​存储或其他经常需要的功能,如统计。

Elasticsearch 是提供持久存储、统计等多项功能的现代搜索引擎。
如果你开始一个新项目,我们建议您考虑使用 Elasticsearch 作为唯一的数据存储,以帮助保持你的设计尽可能简单。
此种场景不支持包含频繁更新、事务(transaction)的操作。

举例如下:新建一个博客系统使用 es 作为存储。
1)我们可以向 ES 提交新的博文;
2)使用 ES 检索、搜索、统计数据。

ES 作为存储的优势:
如果一台服务器出现故障时会发生什么?你可以通过复制 数据到不同的服务器以达到容错的目的。
注意:
整体架构设计时,需要我们权衡是否有必要增加额外的存储。

2、场景二:在现有系统中增加 elasticsearch

由于 ES 不能提供存储的所有功能,一些场景下需要在现有系统数据存储的基础上新增 ES 支持。

举例 1:ES 不支持事务、复杂的关系(至少 1.X 版本不支持,2.X 有改善,但支持的仍然不好),如果你的系统中需要上述特征的支持,需要考虑在原有架构、原有存储的基础上的新增 ES 的支持。

举例 2:如果你已经有一个在运行的复杂的系统,你的需求之一是在现有系统中添加检索服务。一种非常冒险的方式是重构系统以支持 ES。而相对安全的方式是:将 ES 作为新的组件添加到现有系统中。
如果你使用了如下图所示的 SQL 数据库和 ES 存储,你需要找到一种方式使得两存储之间实时同步。需要根据数据的组成、数据库选择对应的同步插件。可供选择的插件包括:
1)mysql、oracle 选择 logstash-input-jdbc 插件。
2)mongo 选择 mongo-connector 工具。

假设你的在线零售商店的产品信息存储在 SQL 数据库中。 为了快速且相关的搜索,你安装 Elasticsearch。
为了索引数据,您需要部署一个同步机制,该同步机制可以是 Elasticsearch 插件或你建立一个自定义的服务。此同步机制可以将对应于每个产品的所有数据和索引都存储在 Elasticsearch,每个产品作为一个 document 存储(这里的 document 相当于关系型数据库中的一行/row 数据)。

当在该网页上的搜索条件中输入“用户的类型”,店面网络应用程序通过 Elasticsearch 查询该信息。 Elasticsearch 返回符合标准的产品 documents,并根据你喜欢的方式来分类文档。 排序可以根据每个产品的被搜索次数所得到的相关分数,或任何存储在产品 document 信息,例如:最新最近加入的产品、平均得分,或者是那些插入或更新信息。 所以你可以只使用 Elasticsearch 处理搜索。这取决于同步机制来保持 Elasticsearch 获取最新变化。

3、场景三:使用 elasticsearch 和现有的工具

在一些使用情况下,您不必写一行代码就能通过 elasticssearch 完成一项工作。很多工具都可以与 Elasticsearch 一起工作,所以你不必到你从头开始编写。
例如,假设要部署一个大规模的日志框架存储,搜索,并分析了大量的事件。
如图下图,处理日志和输出到 Elasticsearch,您可以使用日志记录工具,如 rsyslog(www.rsyslog.com),Logstash(www.elastic.co/products/logstash),或 Apache Flume(http://flume.apache.org)。
搜索和可视化界面分析这些日志,你可以使用 Kibana(www.elastic.co/产品/ kibana)。


为什么那么多工具适配 Elasticsearch?主要原因如下:

1)Elasticsearch 是开源的。
2)Elasticsearch 提供了 JAVA API 接口。
3)Elasticsearch 提供了 RESTful API 接口(不管程序用什么语言开发,任何程序都可以访问)
4)更重要的是,REST 请求和应答是典型的 JSON(JavaScript 对象 符号)格式。通常情况下,一个 REST 请求包含一个 JSON 文件,其回复都 也是一个 JSON 文件。

 

 

 

1 – 记录和日志分析

对于熟悉 Elasticsearch 的人来说,这个应该不足为奇。围绕 Elasticsearch 构建的生态系统使其成为最容易实施和扩展日志记录解决方案之一。我们平台上的许多用户都没有什么不同,他们利用这一点来将日志记录添加到他们的主要用例中,或者将我们纯粹用于日志记录。

从 Beats,Logstash 到 Ingest Nodes,Elasticsearch 为您提供了大量的选项,可以在任何地方获取数据并将其索引化。然后,使用 Kibana 工具使您能够创建丰富的仪表板和分析,而 Curator 使得您自动化管理索引的生命周期。

2 – 采集和组合公共数据

与日志数据一样,Elastic Stack 拥有大量工具,可以轻松抓取和索引远程数据。此外,与大多数文档存储一样,非严格的模式使 Elasticsearch 可以灵活地接收多个不同的数据源,并能使得这些数据可以管理和搜索。

您可以查看的一个很酷的例子是我们的 Twitter 连接器(如下图所示),它允许您设置在 Twitter 上看到的主题标签,然后采集这些主题标签的相关推文并在 Kibana 中进行分析。我们在核心 Elastic Stack 组件上构建了该产品,并添加了一些额外的部件以帮助它扩展。


3 – 全文搜索

毫无疑问,作为 Elasticsearch 的核心功能,全文搜索在此列表中占据重要位置。令人惊讶的是,我们的客户群中的全文检索的应用远远超出了传统的企业搜索或电子商务。

从欺诈检测/安全到协作等,我们的用户已经证明 Elasticsearch 的搜索功能强大,灵活,并且包含大量工具以使搜索更容易; Elasticsearch 有自己的查询 DSL、内置的自动补全功能等等。

4 – 事件数据和指标

Elasticsearch 还可以很好地处理时间序列数据,如指标(metrics )和应用程序事件。这是另一个巨大的 Beats 生态系统允许您轻松获取常见应用程序数据的区域。无论您使用何种技术,Elasticsearch 都有很好的机会获取开箱即用的指标和事件…,添加该功能非常简单。

5 – 数据可视化

凭借大量的图表选项,地理数据的平铺服务和时间序列数据的 TimeLion,Kibana 是一款功能强大且易于使用的可视化工具。对于上面的每个用例,Kibana 都会处理一些可视化组件。

一旦您对各种数据提取工具感到满意,您就会发现 Elasticsearch + Kibana 将成为您可视化数据的首选工具。

结论

虽然并非每个用例都是如此,但这 Top5 是我们服务中统计出的最典型应用。 Elasticsearch 和 Elastic Stack 的其他部分已被证明是非常通用的,正如您在上面所看到的,有多种方法可以将 Elasticsearch 集成到您今天所做的事情中并获得额外的洞察力。对我而言,这是 Elasticsearch 最酷的部分,它能够增强您已经使用的技术,而不仅仅是另一个数据库来存储您的数据。


何处钟 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Elasticsearch 的使用场景深入详解
喜欢 (0)
[15211539367@163.com]
分享 (0)

您必须 登录 才能发表评论!