使用Elasticsearch 构建 .NET 企业级搜索

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


企业级搜索

下面是企业级搜索面临的基本挑战:拥有很多数据源的大型组织如何能够通过一个界面向内部和外部用户提供搜索所有公共公司数据源的功能?这个单一界面可能是一个 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 请求示例:

  • 查询所有索引:
    http://localhost:9200/_cat/indices/?v

  • 查询索引元数据:
    http://localhost:9200/clients/_stats

  • 查询所有索引数据:
    http://localhost:9200/clients/_search?q=*:*

  • 搜索索引内的特定字段值:
    http://localhost:9200/clients/_search?q=field:value

  • 获取索引映射类型内的所有数据:
    http://localhost:9200/clients/orders/_search?q=*:*


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 节约成本,怎样管理和优化基于时间序列的索引数据,才能提高集群的整体性能?

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


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

 

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


640?wx_fmt=png

       

这张图谱出自阮一鸣,我之前听过他在 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 构建出你自己的搜索和数据分析产品。

 

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

 

640?wx_fmt=png

△扫我的海报试读或订阅


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


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

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

 

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

想要干货往下看:


640?wx_fmt=jpeg

640?wx_fmt=jpeg


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客练习赛73 D 离别(线段树+右端点排序离线查询)

牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i,我们都找到一个区间(l,r)使得区间中的点为左端点时 里面最大的的种数为k。 这个可以用队列或者vector来维护。 然后我们对于q个查询,安装r从小到大排序。 开始遍历&#xff0…

书籍推荐:《More Effective C#》

很多年前看过Bill Wagner的《Effective C#》第一版,涵盖了C#2.0相关语言特性的最佳实践,教我们怎样更优雅地去编写C#代码,当时觉得受益匪浅。最近拿到了《More Effective C#》第二版,目前看了大概三分之二,让我对C#的的…

Codeforces Round #717 (Div. 2) D(倍增dp)

Codeforces Round #717 (Div. 2) D 题意:n个数 q个询问,每一个询问有l和r,问你l到r这段区间中最少能分成几段,每一段中的数都是互质的。 思路:首先预处理出每一个点向左走最多能走多远,可以分解质因数来找&#xff0c…

Codeforces Round #716 (Div. 2) D(随机算法)

Codeforces Round #716 (Div. 2) D 题意:区间查询,问区间最少能分成几部分使得最多的数不超过总数的一半 向上取整。 思路:找到区间的总数s,如果不超过一半的话就是一部分。超过一半的话,那我们只要考虑超过一半的那一个数怎么组合&#xff…

牛客挑战赛30 C 小G砍树 换根dp+组合

链接:https://ac.nowcoder.com/acm/contest/18072/E 题目:给你一棵n个节点的带标号无根树。每次,你可以选择一个度数为1的节点并将它从树上移除。问总共有多少种不同的方式能将这棵树删到只剩 1 个点。两种方式不同当且仅当至少有一步被删除的…

换根dp求树所有节点的最小深度

链接:https://ac.nowcoder.com/acm/contest/18072/A 牛妹有一张连通图,由n个点和n-1条边构成,也就是说这是一棵树,牛妹可以任意选择一个点为根,根的深度为0,对于任意一个非根的点,我们将他到根节…

译 | 介绍全新 Microsoft.Data.SqlClient

原文:Diego翻译:Edi Wang本文由 SqlClient 和 SQL 服务器工具上的项目经理 Vicky Harp 撰写。那些一直密切关注 .NET 开发的人很可能看到 Scott Hunter 的最新博客文章,即《.NET Core 是 .NET 的未来》。.NET Framework 将重点转向稳定性&…

Linux下Jenkins与GitHub自动构建NetCore与部署

今天我们来谈谈NetCore在Linux底下的持续集成与部署。NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub。我们就跟着博文往下走吧。1.Linux环境在进行自动构建之前,我们需要一个可以运行的Linux环境,并保证…

容器化之后如何节省云端成本?(二十七)

如何节约云端成本?上云在大部分情况下就是为了降低成本,在这方面,主流的容器服务基本上都能够有效地降低成本——不仅能够高效自动化的管理和控制容器,极大地降低了DevOps的维护成本,而且不需支付Kubernetes Master节点…

2020牛客多校第1场I-1 or 2一般图最大匹配带花树

链接:https://ac.nowcoder.com/acm/contest/5666/I Bobo has a graph with n vertices and m edges where the i-th edge is between the vertices ai​ and bi​. Find out whether is possible for him to choose some of the edges such that the i-th vertex is…

Codeforces Round #609 (Div. 2) D. Domino for Young 黑白染色

传送门 文章目录题意:思路:题意: 给你个不规则的网络格子,有nnn列,每列有aia_iai​个格子,让你将121212的多米诺骨牌无重叠的放进去,问最多能放多少个。 思路: 首先如果点数小的话…

Network 黑暗爆炸 - 3732 倍增lca || Kruskal重构树

传送门 文章目录题意:思路:题意: 思路: 两点间最长边最小值一定是最小生成树上两点间的最大值,这个比较容易证,就不多说了。 知道这个结论后, 我们直接跑一个KruskalKruskalKruskal建树&#x…

Manacher入门

写在前面 manachermanachermanacher比想象中好理解得多 至少它给了我学习字符串的信心 能干啥 manachermanachermanacher,中文马拉车(您别说,这名字还挺形象),主要用于计算字符串每一个位置为对称中心的回文串长度&a…

HDU.6761.Minimum Index(Lyndon分解)

题目大意&#xff1a;给一个字符串&#xff0c;求字符串的所有前缀的最小后缀&#xff1b; 思路&#xff1a;主要还是要理解Lyndon串的算法的整一个过程 参考&#xff1a;搬运来自 #include <iostream> #include <cstdio> #include <fstream> #include <…

C#规范整理·异常与自定义异常

这里会列举在C#中处理CLR异常方面的规范&#xff0c;帮助大家构建和开发一个运行良好和可靠的应用系统。前言迄今为止&#xff0c;CLR异常机制让人关注最多的一点就是“效率”问题。其实&#xff0c;这里存在认识上的误区&#xff0c;因为正常控制流程下的代码运行并不会出现问…

C#中await/async闲说

自从C#5.0增加异步编程之后&#xff0c;异步编程越来越简单&#xff0c;async和await用的地方越来越多&#xff0c;越来越好用&#xff0c;只要用异步的地方都是一连串的异步&#xff0c;如果想要异步编程的时候&#xff0c;需要从底层开始编写&#xff0c;这样后边使用的时候就…

Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 考虑到最大面积是由四种颜色构成的&#xff0c;且四种颜色可以从中心扩展出去&#xff0c;所以我们分别维护四种颜色的二维前缀和&#xff0c;O(1)O(1)O(1)计算矩阵内颜色的个数。现在我们…

Codeforces Round #701 (Div. 2) E. Move and Swap 思维 + dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 由于是按层来的&#xff0c;所以我们肯定先按照层来分组。 定义dp[i]dp[i]dp[i]为红棋在位置iii的时候的最大得分和。 先考虑不换的情况&#xff0c;我们对于每个点都从他的父节点转移过来…

用 docker-compose 启动 WebApi 和 SQL Server

本系列文章所要做出的演示架构基于 .NET Core Web Api、MSSQL、Skywalking 和 nginx &#xff0c;这些都会通过docker-compose一键创建/启动容器&#xff0c;然后用 Azure DevOps 发布上线。所以本系列文章重点并不是如何写好.NET Core&#xff0c;而是围绕着 .NET Core 的容器…

你可以保持沉默,但你所说的一切都将成为呈堂证供——浅谈Azure WORM保护

本文作者|Yuan Han本文来源|Reid爸的菜园子美国安然事件后&#xff0c;电子数据的合规性保存越来越受到重视&#xff1b;各国政府制定了一系列的法律&#xff0c;如美国《赛班斯法案》等&#xff0c;对于不同类型的电子数据保留期限做了严格规定&#xff1b;国内也没落后&#…