ElasticSearch7——索引阶段与搜索阶段

164 阅读2分钟

[这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战]


搜索

在ElasticSearch7的搜索体系中,其实分为两个阶段:

  • 索引阶段
  • 搜索阶段

Index Time

索引是ElasticSearch7中一个很重要的的概念,类似与关系型数据库中的database,是一个数据集。按照倒排索引处理数据,为搜索提供支持。而索引阶段就是数据进入ES的环节,在这个流程中会使用分析器对文本数据进行过滤、分词以及处理。在这个阶段中,数据流入了ElasticSearch7数据库中。

Search Time

而搜索时,用户需要提供对应的字符串,该数据应该是text格式。为了时用户提供的字符串能够命中数据,需要对查询字符串使用相同的分析器进行处理。当然,有时候处理后也无法命中,这时候也可以单独的为查询设置分析器。索引阶段的分析器可以称之为索引分析器,而搜索阶段的分析器可以成称之为搜索分析器,但两者其实是殊途同归的。

异步搜索

有些复杂搜索可能耗费的时间无法估计,所以ElasticSearch7支持用户进行异步搜索,并提供了相关API。异步搜索 API 可让用户异步执行搜索请求、监控其进度并在部分结果可用时检索它们。在异步收搜索时,服务端会返回一个ID,然后客户端根据这个ID去查询进度,并获取查询结果。

补全

在搜索时,很多引擎都提供补全功能,即词语无需全部打出,就可以查询分词后的数据,提供可能的选型。但是,在索引阶段会变得特别缓慢,因为分词时需要使用Edge N-Gram Tokenizer分词器对文本进行分割。

image.png

业务中使用的是中文的分词器IK,也可以配置搜索补全。