本节书摘来自华章计算机《深入理解ElasticSearch》一书中的第1章,第1.1节,作者:[美] 拉斐尔·酷奇(Rafa Ku) 马雷克·罗戈任斯基(Marek Rogoziński)更多章节内容可以访问云栖社区“华章计算机”公众号查看。
第1章
ElasticSearch简介
我们希望读者通过阅读本书能获取和拓展关于ElasticSearch的基本知识,并假设读者已经知道如何使用ElasticSearch进行单次或批量索引创建,如何发送请求检索感兴趣的文档,如何使用过滤器缩减检索返回文档的数量,以及使用切面/聚合(faceting/aggregation)机制来计算数据的一些统计量。不过,在接触ElasticSearch提供的各种令人激动的功能之前,仍然希望读者能对Apache Lucene有一个快速了解,因为ElasticSearch使用开源全文检索库Lucene进行索引和搜索,此外,我们还希望读者能了解ElasticSearch的一些基础概念,以及为了加快学习进程,牢记这些基础知识,当然,这并不难掌握。同时,我们也需要确保读者能按ElasticSearch所需要的那样正确理解Lucene。本章主要涵盖以下内容:
- Apache Lucene是什么。
- Lucene的整体架构。
- 文本分析过程是如何实现的。
- Apache Lucene的查询语言及其使用方法。
- ElasticSearch的基本概念。
- ElasticSearch内部是如何通信的。
1.1 Apache Lucene简介
为了全面理解ElasticSearch的工作原理,尤其是索引和查询处理环节,对Apache Lucene的理解显得至关重要。揭开ElasticSearch神秘的面纱,你会发现它在内部不仅使用Apache Lucene创建索引,同时也使用Apache Lucene进行搜索。因此,在接下来的内容中,我们将展示Apache Lucene的基本概念,特别是针对那些从未使用过Lucene的读者们。
1.1.1 熟悉Lucene
读者也许会好奇,为什么ElasticSearch的创始人决定使用Apache Lucene而不是开发自己的全文检索库。对于这个问题,笔者并不是很确定,毕竟我们不是这个项目的创始人,但我们猜想是因为Lucene的以下特点而得到了创始人的青睐:成熟、高性能、可扩展、轻量级以及强大的功能。Lucene内核可以创建为独立的Java库文件并且不依赖第三方代码,用户可以使用它提供的各种所见即所得的全文检索功能进行索引和搜索操作。当然,Lucene还有很多扩展,它们提供了各种各样的功能,如多语言处理、拼写检查、高亮显示等。如果不需要这些额外的特性,可以下载单个的Lucene内核库文件,直接在应用程序中使用。