云原生应用中的 Elasticsearch

提示

此内容摘自电子书《为 Azure 构建云原生 .NET 应用程序》,可在 .NET 文档上获取,也可作为免费可下载的 PDF 脱机阅读。

《为 Azure 构建云原生 .NET 应用程序》电子书封面缩略图。

Elasticsearch 是一种分布式搜索和分析系统,可跨不同类型的数据实现复杂的搜索功能。 它是开源内容,非常受欢迎。 请思考下列公司如何将 Elasticsearch 集成到其应用程序中:

  • Wikipedia,进行全文搜索和增量搜索(键入时搜索)。
  • GitHub,索引和公开超过 800 万个代码存储库。
  • Docker,使其容器库可发现。

Elasticsearch 是在 Apache Lucene 全文搜索引擎的基础上构建的。 Lucene 提供高性能的文档索引和查询。 它使用倒排索引方案来索引数据 - 不是将页面映射到关键字,而是将关键字映射到页面,就像书籍末尾的术语表一样。 Lucene 拥有强大的查询语法功能,可通过以下方法查询数据:

  • 字词(完整单词)
  • 前缀(“以...开头”的词)
  • 通配符(使用“*”或“?”筛选器)
  • 短语(文档中的一连串文本)
  • 布尔值(构成查询的复杂搜索)

Lucene 提供低级别的搜索管道,Elasticsearch 则提供基于 Lucene 的服务器。 Elasticsearch 添加了更高级别的功能来简化 Lucene 的工作,包括用于访问 Lucene 索引和搜索功能的 RESTful API。 它还提供分布式基础结构,可实现大规模可伸缩性、容错性和高可用性。

对于具有复杂搜索要求的较大云原生应用程序,Elasticsearch 在 Azure 中作为托管服务提供。 Microsoft Azure 市场提供了预配置的模板,开发人员可使用它们在 Azure 上部署 Elasticsearch 群集。

在 Microsoft Azure 市场中,开发人员可使用构建用于在 Azure 上快速部署 Elasticsearch 群集的预配置模板。 使用 Azure 托管的产品/服务,可部署多达 50 个数据节点、20 个协调节点和 3 个专用主节点。

总结

本章详细介绍了云原生系统中的数据。 我们首先将整体式应用程序中的数据存储与云原生系统中数据存储模式进行了比较。 我们查看了云原生系统中实现的数据模式,包括跨服务查询、分布式事务,以及处理高容量系统的模式。 我们比较了 SQL 和 NoSQL 数据。 还查看了 Azure 中提供的数据存储选项,包括以 Microsoft 为中心的选项和开源选项。 最后,我们讨论了云原生应用程序中的缓存和 Elasticsearch。

参考