2. 倒排索引了解吗?
倒排索引是Elasticsearch中非常核心的概念,它使得全文搜索变得高效。
- 定义:倒排索引是一种数据结构,用于存储文档集合中的单词到文档映射关系。简单来说,就是将每个词和包含这个词的所有文档关联起来。
-
工作原理:
- 在正向索引中,系统会记录每篇文档的内容及其位置信息。
- 而在倒排索引中,系统则会创建一个词汇表,并为每个词建立一个列表,列出所有包含该词的文档ID以及词在文档中的位置信息。
3. ES的分页功能有什么特性?
在Elasticsearch中,处理大量搜索结果时有几种常见的分页方法,每种方法都有其特点和适用场景:
-
from
和size
分页
这是最基本的分页方式,类似于传统的SQL分页。你通过设置from
参数来指定从哪条记录开始,用size
参数来指定返回多少条记录。这种方式简单直观,但不适合大数据集的深分页。随着from
值的增大,性能会显著下降,而且默认情况下最多只能返回10000条记录(可以通过配置调整这个限制)。
-
scroll
API
当你需要处理非常大的数据集时,可以使用scroll
API。它创建一个快照,并允许你逐步滚动浏览所有数据。这种方式非常适合批量导出或数据分析,因为它不受10000条记录的限制。不过,scroll
的数据不是实时更新的,且长时间保持打开的scroll可能会占用较多资源。
search_after
search_after
是一种高效的分页方式,特别适合需要高性能和实时数据更新的应用。它利用前一页的结果中的排序值作为下一次查询的起点,从而实现连续翻页。这种方式避免了from
+ size
带来的性能问题,但不能直接跳到任意页,必须按顺序逐页翻阅。
4. ES的分词检索?
简单来说分词检索就是将文本拆分成一个个词汇(或称为“词项”),然后基于这些词汇进行搜索的过程:
- 文本输入:用户输入一段文本进行搜索。
- 分词:Elasticsearch使用分析器将这段文本分解成单独的词汇。例如,句子 “The quick brown fox” 会被分解成 [“The”, “quick”, “brown”, “fox”]。
- 匹配:Elasticsearch在索引中查找包含这些词汇的文档。如果某个文档中的内容包含了这些词汇,那么这个文档就会被作为搜索结果返回。
通过这种方式,Elasticsearch能够快速找到与查询相关的文档,实现高效的全文搜索。