MST
星途 面试题库

面试题:ElasticSearch中searchtype几种常见类型及适用场景

请列举ElasticSearch中searchtype的几种常见类型,并简要说明每种类型在实际应用场景中的合理性及优势。
20.2万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

1. query_then_fetch

  • 合理性:先在各个分片上执行查询,获取文档的ID列表,再根据ID去对应的分片上获取完整文档。这种方式适用于需要快速获取大量文档ID,并在后续需要获取文档详细内容的场景。比如在一个大型电商搜索场景中,用户搜索某个商品关键词,先快速得到符合条件的商品ID,再获取商品详细信息展示给用户。
  • 优势:减少网络传输量,提高查询效率。因为在第一步只传输文档ID,而非完整文档数据。而且它可以并行处理各个分片的查询,充分利用集群资源。

2. dfs_query_then_fetch

  • 合理性:在执行query_then_fetch之前,会先在各个分片上收集词频等统计信息,用于更准确的相关性计算。适用于对搜索结果相关性要求极高的场景,如学术文献搜索,需要精准地根据关键词的频率和分布来返回最相关的文献。
  • 优势:能够提供更准确的搜索结果相关性排序,因为它在查询阶段充分考虑了词频等信息,相比query_then_fetch能更精确地评估文档与查询的相关性。

3. count

  • 合理性:仅用于统计符合查询条件的文档数量,不获取文档内容。适用于只关心数量的场景,比如在一个论坛中,需要快速统计某个板块下的帖子数量。
  • 优势:效率高,因为不需要获取文档具体内容,只专注于数量统计,减少了不必要的数据传输和处理,能够快速返回统计结果。

4. scan

  • 合理性:用于深度分页场景,它不会像普通分页那样随着分页深度增加而性能急剧下降。比如需要遍历索引中大量数据进行数据迁移、备份等操作时非常适用。
  • 优势:可以保持一个滚动的游标,持续从索引中获取数据,适合对大量数据进行无状态的遍历操作。它避免了传统分页方式在深度分页时内存和性能方面的问题。