一文简单了解Elasticsearch

119 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

Elasticsearch

Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够安全可靠的获取各种来源于格式的数据,然后实时的对数据进行索引、搜索、分析。被广泛的用在数据引擎、搜索工具、存储引擎、实时数据分析、图像信息系统、生物研究等各个领域,它能让你以前所未有的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合:

  • Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did-you-mean 的建议。
  • 卫报 使用 Elasticsearch 将网络社交数据结合到访客日志中,为它的编辑们提供公众对于新文章的实时反馈。
  • Stack Overflow 将地理位置查询融入全文检索中去,并且使用 more-like-this 接口去查找相关的问题和回答。
  • GitHub 使用 Elasticsearch 对1300亿行代码进行查询。

Elasticsearch 中没有一个单独的组件是全新的或者是革命性的。全文搜索很久之前就已经可以做到了, 就像很早之前出现的分析系统和分布式数据库。 革命性的成果在于将这些单独的,有用的组件融合到一个单一的、一致的、实时的应用中。对于初学者而言它的门槛相对较低, 而当你的技能提升或需求增加时,它也始终能满足你的需求。

搜索引擎-Apache Lucene

Elasticsearch是一个开源的搜索引擎,建立在著名的全文搜索引擎库Apache Lucene基础上,Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库,无论是开源还是私有的搜索引擎库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。

Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

Elasticsearch不仅仅是Lucene,也不简单的只是一个全文搜索引擎,它还具有以下功能:

  • 一个分布式的实时文档存储,每个字段都可以被索引与搜索
  • 一个分布式的实时分析搜索引擎
  • 可以支持上百个服务节点的扩展,并支持PB级别的结构化或非结构化数据

Elasticsearch 将所有的功能打包成一个单独的服务,这样你可以通过程序与它提供的简单的 RESTful API 进行通信, 可以使用自己喜欢的编程语言充当 web 客户端,甚至可以使用命令行(去充当这个客户端)。

参考文档

Elasticsearch:权威指南