Elasticsearch:如何创建搜索引擎

作者:Jessica Taylor

搜索引擎是生活中我们认为理所当然的事情之一。 每当我们寻找某些东西时,我们都会将一个单词或短语放入搜索引擎,就像魔术一样,它会为我们提供一个匹配结果列表。 现在可能感觉不那么神奇了,因为这是我们每天都在做的事情。 但任何记得 Alta Vista 时代的人都应该明白我们现在的情况有多好。

当我说 "搜索引擎" 时,很容易想到流行的网络搜索引擎,例如 Google 以及在较小程度上上的 Bing。 但搜索引擎的应用远远超出了搜索网络的范围。 Uber 和 Tinder 等热门应用程序包含强大的搜索引擎,可利用其平台独有的地理位置和其他特征将用户与司机和日期进行匹配。 这对于流媒体应用程序、学术网站甚至内部网来说都是一样的。 事实上,如果你查看任何主要网站的导航栏,你很可能会看到一个搜索栏,可以帮助你从该特定网站找到你需要的内容。

搜索引擎的潜在用例数量巨大,这可能就是你阅读本文的原因。 也许你是一名开发人员,希望构建你的第一个搜索引擎。 或者你可能意识到搜索通过检索增强生成来增强生成式 AI 体验,并且想了解更多信息。 为了使这尽可能简单,我们将本指南分为三个部分:

  • 搜索引擎的定义和概念
  • 创建你自己的搜索引擎
  • 使用 Elastic® 轻松构建搜索引擎

读完本文后,你将掌握使用 Web 服务器、数据摄取和索引构建第一个搜索引擎所需的所有知识,并由 Elastic 的搜索平台提供支持。

搜索引擎的定义和概念

将搜索引擎视为图书管理员,帮助你找到所需的信息。 你告诉他们你要解决的问题或你要回答的问题,图书管理员可以向你推荐最有可能对你有帮助的书籍和资源。 他们可能并不总是能做对,但这比盲目地翻阅书籍以期获得幸运要有效得多。

搜索引擎由四个主要组件组成:网络服务器数据摄取索引结果页面。 在构建搜索引擎之前,了解它们各自的作用非常重要。

网络服务器

如果搜索引擎是图书馆员,那么网络服务器就是图书馆本身。 你可以在此处存储向用户返回有意义的结果所需的所有数据。 这些 Web 服务器通常基于云,因为它们为你提供了可扩展性、可访问性、安全性和性能。 对于网络搜索引擎来说,这将是跨不同网站的 HTML 页面、图像、视频和其他资产的位置。 对于社交媒体网站,这将是该平台上内容所需的标题、描述、元数据和其他信息。

数据摄取

就像图书馆需要整理和收集不同的书籍一样,搜索引擎需要从某个地方收集数据。 这就是为什么数据摄取是构建搜索引擎如此重要的一部分。 对于网络搜索引擎,此数据摄取是使用网络爬虫完成的。 爬虫使用复杂的算法来扫描网站并识别内容是什么以及在哪里可以找到内容。

通过 API 与其他服务集成是另一种类型的数据摄取。 这些集成使你可以选择数据的来源,从而使你的搜索引擎能够更好地查找特定数据。 例如,如果你正在构建视频搜索引擎,你可能希望显示来自多个提供商(例如 YouTube、Netflix 和 Disney+)的结果。

同样,你可以使用连接器从一个或多个数据源引入信息。 这些通常是预构建的模块或代码片段,可用于连接到特定的数据库、应用程序或 API。 它们为你提供了足够的灵活性,而无需将你的范围扩大得太远。

索引

就像在图书馆一样,你需要有一个内容索引,否则将不可能知道所有内容在哪里。 索引通过组织和存储数据源中的信息来实现此目的,以确保可以有效地检索这些信息。 为了让你的搜索引擎正常工作,它需要能够快速识别、排名和提供内容。

因为你可能尝试对大量数据建立索引,所以不能简单地从源逐字复制该索引。 相反,索引需要处理这些内容,将其分解为关键元素,例如:

  • 关键词:页面上找到的单词和短语
  • 嵌入:表示文本数据的多维向量
  • 元数据:标题、描述和页面中嵌入的其他结构化数据
  • 内容分析:了解页面的主题、实体和整体含义
  • 反向链接:来自其他网站的指向内容的链接

搜索引擎结果页面 (search enginer results pages - SERP)

这个难题的最后一部分实际上是向用户显示搜索结果。 搜索引擎结果页面承担了你在服务器、数据摄取和索引方面所做的所有艰苦工作,最终形成一个有用结果列表供用户选择。

其外观因搜索引擎而异,但你可能会在 SERP 上有标题、链接、描述和某种分页。 你可能还拥有更高级的过滤和分面,因此用户可以根据常用参数轻松优化结果。 但重要的是结果会清晰显示,因此很容易找到最佳、最相关的选择。

你的搜索相关性很重要,因为它可以通过向用户展示你了解他们的意图来培养信任,并确保他们走在正确的道路上。 这最终引导他们无缝地获取他们想要的信息 ------ 这种结合可以建立忠诚度并促进持久的参与。

使用 Elastic 创建你自己的搜索引擎

现在你已经更好地了解了搜索引擎的关键组件,让我们深入了解构建你自己的搜索引擎的过程以及你可能面临的挑战。

首先,你需要考虑搜索引擎的规模。 瞄准明星并尝试建立新的谷歌可能很诱人。 但抓取数十亿个网页需要大量的基础设施和计算能力,更不用说存储所有数据的能力了。

在开始构建之前,你还应该牢记你现有的知识和技能。 你对数据源了解得越多,就越容易将其用于搜索引擎。 同样,尝试坚持使用你已经有经验的技术堆栈。 如果你精通 Python,请考虑使用它来构建你的搜索引擎。

第 1 步:定义你的搜索要求

构建搜索引擎的第一步是确定搜索引擎要解决的问题。 这个决定将影响你要构建的所有其他内容,从数据源到索引,再到显示结果的方式。 因此,请考虑一下你正在为谁构建搜索引擎,并问自己以下问题:

  • 他们为什么要寻找这些信息/内容?
  • 你需要了解哪些信息才能确定某件事是否相关?
  • 你将如何决定哪些结果比其他结果更好?
  • 你将如何呈现结果以使其尽可能有用?

一旦回答了这些问题,你将能够更好地在整个构建过程中做出关键决策 - 从使用哪些数据源到是否应该在搜索引擎结果页面上显示图像。 你心中的这些答案越清晰,你就越能满足用户的需求和期望。

第 2 步:抓取网络以提取数据

一旦你知道搜索引擎的要求是什么,下一步就是获取你需要的数据。 如果你计划使用集成或连接器,则需要访问这些源并确保你可以在需要索引时访问数据。 如果数据源属于你,那么这应该不成问题。 但请记住,任何外部数据源都会带来一些风险。 数据源的所有者可以随时撤销访问权限或对数据进行更改,这可能会导致出现一些问题。 你可以安排数据刷新来解决此问题,但如果数据的结构或体系结构发生更改,仍然可能会导致问题。

如果你要创建网络搜索引擎,则需要使用网络爬虫来获取要索引的数据。 这所需的时间完全取决于你的搜索引擎的范围。 理论上,你可以构建自己的爬虫,但这需要大量工作。 相反,使用现有工具(例如 Elastic 网络爬虫)会更快、更容易。 这将扫描你喜欢的任何网站,并且你可以安排自动重新爬网,以便你的搜索引擎始终保持最新。

第三步:存储收集到的信息

无论你使用爬虫程序、API 还是连接器,都没有关系 --- 你仍然需要某个地方来存储收集到的信息。 但你不应该急于选择任何旧数据库。 你需要考虑数据量和增长、性能要求、数据结构、可扩展性、可靠性、安全性和分析等因素。 你还需要考虑短期和长期存储这些数据的成本。

正如我们之前提到的,考虑你自己的技能也很有用。 例如,如果你之前在开发中主要使用 Elasticsearch®,那么这可能是你现在的最佳选择。 但是,如果你对几种不同类型的数据库感到满意,则应该根据上面列出的因素做出决定。

步骤 4:索引页面

你需要做的下一件事是对你收集和存储的数据建立索引。 这将让你为用户提供与其查询最相关的结果。 幸运的是,索引是 Elastic 网络爬虫的一部分,这将使你的生活更轻松。 但在配置索引结构时,你仍然需要考虑数据粒度、属性索引和数据压缩等问题。

过程中可能会出现一些尝试和错误,但目标应该是帮助用户:

  • 快速查找相关信息
  • 优化搜索和过滤结果
  • 发现相关内容

使用开箱即用的搜索 UI 将使这一切变得更加容易,因为你可以快速启动并运行搜索引擎 UI。 这使你能够测试你的搜索引擎、检查索引并进行调整和更改以改进你的搜索引擎。 这包括过滤和排序、分页和键入时搜索等功能。

第 5 步:优化搜索结果

构建任何搜索引擎的最终目标是提供最有用和最相关的结果。 但你不太可能一开始就能做到这一点。 相反,你需要不断努力完善你的搜索引擎,以更接近实现该目标。 关键词匹配、向量数据库、混合搜索技术、相关性评分、链接分析和同义词等都可以带来很大的改进。

你还可以利用机器学习和人工智能来增强你的搜索能力。 这可以使你的搜索引擎更加强大,因为它可以从用户行为中学习,包括更高级的个性化,甚至可以更好地理解用户的意图和语气。 不过,这确实也带来了挑战。 你需要确保偏见不会渗透到你的搜索引擎中,并且你需要非常重视隐私和安全。

构建搜索引擎变得容易

构建你的第一个搜索引擎可能感觉像是一项艰巨的任务,但希望这些步骤已经向你表明它实际上是可以实现的。 Elastic 可以帮助完成该过程的每一步。 它通过网络爬虫等工具简化了数据摄取,通过其可扩展且灵活的架构增强了索引功能,并通过其机器学习功能增强了相关性。

无论你是构建网站搜索还是专门的搜索引擎,Elasticsearch 都会为你提供一套全面的工具,帮助你从头开始创建高效且用户友好的搜索体验。

接下来你应该做什么

只要你准备好,我们可以通过以下四种方式帮助你为你的企业带来更好的搜索体验:

  • 开始免费试用,看看 Elastic 如何帮助你的业务。
  • 浏览我们的解决方案,了解 Elasticsearch 平台的工作原理以及我们的解决方案如何满足你的需求。
  • 过我们 45 分钟的网络研讨会,了解如何设置 Elasticsearch 集群并开始数据收集和摄取。
  • 通过电子邮件、LinkedIn、Twitter 或 Facebook 与你认识的愿意阅读本文的人分享本文。

原文:How to create a search engine | Elastic Blog

相关推荐
Elastic 中国社区官方博客5 小时前
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
大数据·elasticsearch·搜索引擎·云计算·全文检索·可用性测试·aws
掘金-我是哪吒5 小时前
微服务mysql,redis,elasticsearch, kibana,cassandra,mongodb, kafka
redis·mysql·mongodb·elasticsearch·微服务
研究是为了理解7 小时前
Git Bash 常用命令
git·elasticsearch·bash
晨欣10 小时前
Elasticsearch和Lucene之间是什么关系?(ChatGPT回答)
elasticsearch·chatgpt·lucene
筱源源16 小时前
Elasticsearch-linux环境部署
linux·elasticsearch
Elastic 中国社区官方博客1 天前
释放专利力量:Patently 如何利用向量搜索和 NLP 简化协作
大数据·数据库·人工智能·elasticsearch·搜索引擎·自然语言处理
Shenqi Lotus1 天前
ELK-ELK基本概念_ElasticSearch的配置
elk·elasticsearch
yeye198912241 天前
10-Query & Filtering 与多字符串多字段查询
elasticsearch
Narutolxy2 天前
精准优化Elasticsearch:磁盘空间管理与性能提升技巧20241106
大数据·elasticsearch·jenkins
谢小涛2 天前
ES管理工具Cerebro 0.8.5 Windows版本安装及启动
elasticsearch·es·cerebro