使用Elasticsearch 构建 .NET 企业级搜索
发布于 4 个月前 作者 yan 121 次浏览

最近几年出现的云计算为组织和用户带来了福音。组织对客户的了解达到前所未有的透彻,并能够采用个性化通信锁定客户。用户几乎可以随时随地获取其数据,使其更加易于访问和使用。为了存储所有这些数据,大型数据中心遍布全世界。但是,大数据同样也意味着大挑战。

企业级搜索

下面是企业级搜索面临的基本挑战:拥有很多数据源的大型组织如何能够通过一个界面向内部和外部用户提供搜索所有公共公司数据源的功能?这个单一界面可能是一个 API、公司网站或甚至是一个在后台实现了自动完成功能的简单文本框。无论公司选择哪种界面,它必须能够让用户搜索其整个数据领域,这可能包括结构化和非结构化数据库、不同格式的 Intranet 文档、其他 API 和其他类型的数据源。

由于搜索多个数据集相当复杂,因此公认的企业级搜索解决方案只有几个 — 且标准太高。企业级搜索解决方案必须包括以下功能:

  • 内容感知:知道特定类型的数据可能位于的位置。
  • 实时索引:保持所有数据都有索引。
  • 内容处理:使不同的数据源都可以访问。

搜索是现代软件必备的一项基础功能,而 Elasticsearch 就是一款功能强大的 开源分布式搜索与数据分析引擎 。这个基于 Java 的服务器构建在 Apache Lucene (lucene.apache.org) 之上,其通过 JSON 支持和 REST Web 接口提供对多个数据源的可伸缩全文搜索,并具有高可用性、冲突管理和实时分析。Elasticsearch可以从海量数据中快速找到相关信息,在同领域内几乎没有竞争对手——近两年 DBRanking 的数据库评测中,ES 在搜索引擎领域 始终位列第一

当你在 GitHub 上搜索时,Elasticsearch 可以实现代码级的搜索与高亮显示 ;当你在网上购物时,ES 可为你推荐喜欢的商品;当你下班打车回家时,ES 可以通过定位附近的乘客和司机,帮助平台优化调度。

Elasticsearch 还被广泛运用于 大数据近实时分析 ,包括 日志分析、指标监控、信息安全 等多个领域。

它可以探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,甚至通过使用机器学习,做到自动识别异常状况。

作为 目前最流行的开源搜索引擎 ,ES 在全球的下载量已超过 3.5 亿次,腾讯、滴滴、今日头条、饿了么、360 安全、小米,vivo 等国内诸多知名公司都在使用 Elasticsearch。

从较高层面来说,Elasticsearch 存储数据的方式非常简单。服务器内结构的最顶层元素称为索引,多个索引可以位于同一数据存储中。索引本身只是文档(一个或多个)容器,每个文档是一个或多个字段的集合(没有定义的结构)。每个索引都可以包含按称为类型的单位聚合的数据,用于表示特定索引内数据的逻辑组。

在将 Elasticsearch 视为类似来自关系数据库领域的表时,这可能很有用。表的行和列与索引的文档和字段之间存在着相同的关联,其中文档对应行,字段对应列。但是,通过 Elasticsearch,没有固定的数据结构或数据库架构。

如前所述,开发人员可以通过 REST Web 接口与 Elasticsearch 服务器通信。这意味着,他们只需通过从浏览器或任何其他类型的 Web 客户端发送 REST Web 请求即可查询索引、类型、数据或其他系统信息。以下是一些 GET 请求示例:

ES的.NET客户端,Elasticsearch .Net - Low level client[5.x],通过引入对应的版本的客户端,便可通过C#操作ES。参考(https://www.elastic.co/guide/en/elasticsearch/client/net-api/5.x/elasticsearch-net.html)

Elasticsearch 有什么特点?

Elasticsearch 非常容易上手 ,具有开箱即用的特性,你可以在极短的时间内设置好开发环境,然后快速上手使用,继而在成百上千台服务器上 实现 PB 级的数据处理

虽然上手快,但要做到 深入理解并高效使用,可就没那么简单了 ,比如:

  1. 为什么我的数据查不到,明明是有的啊!

  2. 什么鬼?为什么这几条数据出现在搜索结果的前几位?

  3. 生产环境我需要多少台机器,索引的分片数怎么样设置才是合理的?

  4. 应该关注哪些指标,才能保证集群健康高效地运行?

  5. 对于日志型应用,如何设置 Hot & Warm Architecture 节约成本,怎样管理和优化基于时间序列的索引数据,才能提高集群的整体性能?

  6. 为什么我的集群脑裂了?数据损坏后,怎样才能恢复?

其实,想要掌握 Elasticsearch,除了要理解 其分布式架构的原理 外,还要了解一些 信息检索领域的知识和相关技巧

分享给你一张 Elasticsearch 核心知识图谱 ,只有对每一个知识点仔细梳理并深入理解,才能解决工作中的实际问题。

这张图谱出自阮一鸣,我之前听过他在 Elastic 中国开发者大会的分享,讲得非常不错。最近,得知他跟极客时间合作,推出了一门视频课 《Elasticsearch 核心技术与实战》, 有幸提前看到了目录和一部分内容,很想推荐给你。

在课程中,他用理论与实践相结合的方式、深入浅出地讲解了 Elasticsearch,只要你坚持学习,就可以掌握 ES 的基本概念和服务搭建,了解其运行机制和常用技巧,并通过上手实战理解 ES 在实际项目中的应用。

近几年 ES 非常热门,所以去年 Elastic 公司推出了 官方的 Elastic 工程师认证考试 ,需要考生在 3 个小时的线上考试中,动手解决 12 个实际问题,就算有多年工作经验的老手都未必能通过。

所以,这个认证的 含金量还是挺高 的,有证跟没证不仅能力水平可能差一个档次,收入也有可能差一个档次。

阮一鸣说,这门课 覆盖了 Elastic 认证考试的全部考点 ,想参加考试的朋友可以将这门课作为参考教材,这也算是 「学习技能之外的 bonus」 了。

关于阮一鸣

阮一鸣,eBay Pronto 平台技术负责人。Pronto 平台管理了 eBay 内部上百个 Elasticsearch 集群,数据规模超过了 4000 个节点。这些集群在 ebay 的生产环境中,支撑了包括订单搜索,商品推荐,日志管理,风险控制,IT 运维,安全监控等不同领域的服务。

作为一名互联网行业的老兵,他从业近 20 年了,在大数据、云计算和性能优化方面积累了丰富的经验。同时,他还是一名连续创业者,创办过手机游戏公司、个性化音乐推荐与分享平台 8box。

他是如何讲解 Elasticsearch 的?

如果你对 Elasticsearch 有些了解,就会发现 ES 的 产品迭代速度非常快 ,很多老的 API 都已经被废弃不再使用,搜索到的参数配置也大多发生了变化。

市面上的书籍和教程都是基于 5.x 甚至是 2.x 版本。而在课程中,哥们儿使用 Elasticsearch 最新的 7.1 版本 进行教学。

所有 ES 最新版本的特性 ,在课程里都会有全面和直观地展现,比如:用机器学习进行异常检测;用 Canvas 展示数据;用索引的生命周期管理工具对索引进行优化等等。

结合目录,我总结了一下, 这个课大概分为 5 个部分

1. 初识 Elasticsearch

Elasticsearch 核心概念、工作机制与应用场景;本地开发环境搭建;倒排索引的原理与 ES 中 Analysis 的具体细节;Mapping 设置和一些基本的 Search & Aggregation API。

2. 深入了解 Elasticsearch

理解 Elasticsearch 分布式架构的原理;相关性算分的原理;数据建模的最佳实践;深入搜索及聚合功能以提高搜索结果的相关度。

3. 管理 Elasticsearch 集群

集群的水平扩展、参数配置、性能优化、故障诊断。

4. 利用 ELK 做大数据分析

结合使用场景和数据,探索 Logstash、Kibana 的各项功能。

5. 应用实战工作坊

设计了电影搜索和 Stack Overflow 用户调查问卷数据分析两个实战项目,通过上手实践,你可以巩固所学的知识点,并运用到实际项目中。

需要什么基础,能获得什么?

这门课不仅适合有 ES 使用经验的人,也适合初学者。 编程知识和数据库的相关使用经验 ,会对你学习 ES 有一定帮助,但 并不是必须的

针对 开发人员 ,搜索是一项被广泛需要的功能,哥们儿详细地讲解了相关的搜索概念在 Elasticsearch 中是如何对应和具体实现的。

如果你是一名 ES 的 运维人员 ,管理了公司内部的 Elasticsearch 集群:上线前的如何进行容量规划,上线后如何保证这些集群在生产环境内稳定高效的运行,如何在凌晨识别出异常信号,及时发出告警,以避免灾难的发生。

这些问题,他在课程中 都会给出相关的最佳实践

其实,无论是开发还是运维,架构师抑或数据分析师,甚至是产品经理,都应该学一学 Elastic Stack。

在大数据时代,近实时的搜索和分析能力,会让你唯快不破,洞见未来。——这句 copy 了阮一鸣,要我说其实就是 升职加薪走上人生巅峰 呗,这话够实在吧。

跟着好好学,结合课程中的练习和实践,相信你一定能学以致用,基于 Elasticsearch 构建出你自己的搜索和数据分析产品。

这部分好像写得有点长啊,要我总结就一句:放心学,学得会,用得着。

△扫我的海报试读或订阅

从我这里订阅有什么福利?

1.早鸟优惠 ¥99,原价 ¥129。

2.订阅专栏后,可以获得阮一鸣亲自整理的高清版「Elasticsearch 核心知识图谱」,获取方式:在公众号内回复关键字「ES」。

说了半天,是时候上目录了,

想要干货 往下看:

👇点击 「阅读原文」 免费试看:

.NET社区新闻,深度好文,欢迎访问公众号文章汇总http://www.csharpkit.com

回到顶部