MST

星途 面试题库

面试题:ElasticSearch中常见可选参数及优化策略

请列举ElasticSearch查询时几个常见的可选参数,并阐述针对这些参数,在提升查询性能方面有哪些优化策略?
13.5万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

常见可选参数及优化策略

  1. from & size
    • 含义from 用于指定从结果集的第几项开始返回,size 用于指定返回结果的数量。
    • 优化策略:避免使用过大的 from 值进行深度分页。因为深度分页时,Elasticsearch 需要在每个分片上查询 from + size 条数据,然后汇总排序后再返回 size 条数据,这会消耗大量资源。如果要实现深度分页,可使用 scrollsearch_after 替代。例如,scroll 适用于需要大量数据一次性处理的场景,它会在初始查询时创建一个快照,后续通过滚动游标获取数据;search_after 则基于上一次查询结果的最后一条数据的某个排序字段值,继续往后查询,适用于实时性要求较高且需按顺序遍历数据的场景。
  2. sort
    • 含义:用于指定排序字段及排序方式(升序 asc 或降序 desc)。
    • 优化策略:尽量使用单字段排序,多字段排序会增加查询复杂度和资源消耗。如果必须使用多字段排序,确保第一个排序字段的选择性足够高,这样能快速缩小结果集范围。同时,对排序字段建立合适的索引,能显著提升排序性能。例如,对于数值类型字段的排序,确保该字段已建立数值类型的索引。
  3. query
    • 含义:定义具体的查询条件,如 matchtermbool 等查询类型。
    • 优化策略:对于 match 查询,当查询文本较短且精确匹配需求高时,可考虑使用 term 查询替代,因为 match 查询会对输入文本进行分词处理,增加了查询复杂度。在使用 bool 查询时,合理组织 mustshouldfilter 等子句,将能快速过滤大量数据的条件放在 filter 子句中,因为 filter 子句不参与评分,能提升查询效率。同时,对查询字段建立合适的索引,对于文本字段根据需求选择合适的分析器创建索引,以提高查询匹配效率。
  4. _source
    • 含义:用于指定返回文档中需要包含的字段,可减少返回的数据量。
    • 优化策略:只返回实际需要的字段,避免返回整个文档。这样可以减少网络传输和内存消耗,提升查询性能。例如,如果只需要文档中的 titlecontent 字段,可通过设置 _source: ["title", "content"] 来限定返回字段。
  5. timeout
    • 含义:设置查询的超时时间,防止查询时间过长占用过多资源。
    • 优化策略:合理设置 timeout 值,既要保证复杂查询有足够时间完成,又要避免因设置过长导致资源长时间被占用。对于不同类型的查询和数据量,需要通过测试来确定合适的超时时间。如果经常出现超时,可分析查询语句,进行性能优化,如优化索引、调整查询逻辑等。