# 1. Bulk API 的批次字节数、并发数和重试如何调节,遇到 429 时为何必须实施背压 A 429 表示请求体格式错误,应减小批次 B 遇到 429 应加大并发强行写入 C 429 表示集群写入压力过大,此时必须实施背压(限速/降并发)让集群消化积压,而非盲目重试或继续压测 ✓ 正确答案 D 429 只与客户端代码有关,与集群状态无关
# 2. ES 8.x Java Client 的 CompletableFuture 异步查询与虚拟线程的协作 A 异步 API 返回 CompletableFuture 实现非阻塞并发,虚拟线程允许大量阻塞 I/O 而不占平台线程,二者协作可兼顾代码简洁与高并发 ✓ 正确答案 B 虚拟线程无法与异步 API 搭配 C 异步 API 会阻塞调用线程 D 虚拟线程只适用于 CPU 密集任务
# 3. Elasticsearch 8.15 中 Ingest Pipeline 与 Spring Boot 4.0 的预写入数据治理流程协同 A Ingest Pipeline 在查询时执行,不影响写入 B Ingest Pipeline 在文档写入前执行处理器链做清洗/转换/脱敏,Spring 侧组装业务数据并指定 pipeline,轻量治理下沉 ES、复杂业务留应用 ✓ 正确答案 C 数据治理必须全部在 Spring 应用层完成 D pipeline 失败不影响文档写入
# 4. Elasticsearch 8.15 引入的 ES|QL 在 Spring Boot 4.0 集成中的查询 DSL 与传统 DSL 差异 A ES|QL 与 DSL 完全等价,无差异 B DSL 更适合复杂管道分析 C ES|QL 是管道式文本查询语言,适合端到端分析(过滤+聚合+后处理),传统 DSL 是 JSON 结构化且 Java Client 类型安全,二者可互补 ✓ 正确答案 D ES|QL 无法聚合
# 5. Elasticsearch 8.x 中 Machine Learning 异常检测与 Spring Boot 业务告警联动的实现 A Spring Boot 直接做异常检测,ES 只存储 B 异常检测结果只能人工查看,无法程序化 C ES ML 通过 datafeed+job 检测异常并输出异常分数,Spring Boot 拉取结果、按阈值过滤并路由到业务告警,实现检测与告警解耦 ✓ 正确答案 D 告警必须由 ES 的 Watcher 完成,Spring 无法参与
# 6. Elasticsearch 8.x 的 snapshot/restore API 与 Spring Boot 定时任务实现的灾备策略 A 快照只能备份一次,无法增量 B 灾备只需创建快照,无需验证恢复 C ES snapshot 注册仓库后增量备份,Spring Boot 定时任务调度创建/保留快照并验证 restore,形成完整灾备链路 ✓ 正确答案 D snapshot 与 Spring Boot 无法结合
# 7. Elasticsearch 的倒排索引与 TF-IDF/BM25 A BM25 与 TF-IDF 完全相同 B 倒排索引是线性扫描所有文档 C BM25 不包含 IDF 因子 D 倒排索引建立 term→文档列表映射加速检索,BM25 通过 TF 饱和与文档长度归一化改进 TF-IDF,是 ES 默认评分算法 ✓ 正确答案
# 8. Elasticsearch 的索引模板(Index Template) A 模板无法设置 mapping B 模板只影响查询,不影响索引创建 C 索引模板在索引名匹配 pattern 时自动应用 settings/mappings/aliases,配合 rollover 统一时序索引配置,多个模板按 priority 决定 ✓ 正确答案 D 所有模板优先级相同,无法覆盖
# 9. Lucene 的 forceMerge(maxNumSegments)对只读索引的优化与 Segment 数量控制 A forceMerge 适合高频写入的索引 B 段数多少不影响查询性能 C forceMerge 不消耗额外 IO D forceMerge 把索引合并为 max_num_segments 指定数量的段,减少段数提升查询性能,但重写全量数据、耗 IO,适合只读索引 ✓ 正确答案
# 10. Reindex 迁移 Mapping 时如何利用新索引、校验计数和原子别名切换实现可回滚发布 A 先建新索引并 reindex,校验文档计数,再用原子别名操作把别名切到新索引、切回旧索引即可回滚,实现无感迁移 ✓ 正确答案 B 迁移必须直接改旧索引,无法回滚 C reindex 后无需校验数据 D 别名切换无法原子完成
# 11. bool 查询的 filter 与 must 在评分、缓存和执行上有何差异,精确条件应放在哪一类 A must 不参与评分,适合放精确条件 B filter 与 must 在评分上无差异 C filter 子句不参与评分且结果可被查询缓存复用,精确条件(term/range)应放 filter 以提升性能 ✓ 正确答案 D filter 无法被缓存
# 12. 使用 Elasticsearch 8.x 的 Connector 同步 MySQL 8.4 与 Spring Boot 数据双写的一致性保障 A 最稳妥方案是应用只写 MySQL,ES 通过 Connector/CDC 从 binlog 异步同步,避免双写非原子问题,并配合重试保证最终一致 ✓ 正确答案 B 双写一定成功,无需处理 C Connector 无法实现增量同步 D 应用同时写 MySQL 与 ES 天然一致
# 13. 使用 Elasticsearch 8.x 的 Cross-Cluster Search 在 Spring Boot 微服务多机房场景的查询路由 A CCS 只能查询本地集群 B CCS 通过注册远程集群用"远端:索引"语法跨集群查询,多机房场景应本地优先查询、必要时跨集群聚合,并权衡跨机房延迟 ✓ 正确答案 C 跨机房查询无延迟成本 D CCS 无法聚合多集群数据
# 14. 在 Spring Boot 4.0 中通过 Elasticsearch Java Client 8.x 的异步 API 与虚拟线程配合 A ES 查询是 I/O 密集,虚拟线程可承载大量阻塞 I/O 而不占平台线程,配合异步 API 编排提升并发,需用信号量限制并发避免过载 ✓ 正确答案 B 虚拟线程无法用于 ES 查询 C 异步 API 必须阻塞平台线程 D 虚拟线程只适合 CPU 密集
# 15. 在 Spring Cloud 微服务中通过 OpenTelemetry 追踪 Elasticsearch 慢查询的根因分析方法 A OTel Agent 自动生成 ES 请求 span,结合链路定位慢查询并核对 ES 侧慢查询日志/线程池/GC 指标,判断是查询本身还是集群资源问题 ✓ 正确答案 B OTel 只能追踪 HTTP,无法追踪 ES C 慢查询根因一定在应用侧 D 无需结合 ES 侧指标即可定位根因
# 16. 排查集群不稳定时,如何关联 JVM 堆、断路器、线程池拒绝、分片恢复和磁盘水位 A 只看磁盘水位即可判断全部问题 B 断路器触发与内存无关 C 需联动分析 JVM 堆/GC、断路器拒绝、线程池拒绝、分片恢复与磁盘水位,这些因素常形成"堆满→GC 慢→查询慢→拒绝→断路器"的因果链 ✓ 正确答案 D 线程池拒绝与负载无关
# 17. Dynamic Template 如何按字段名或检测类型映射数据,规则顺序错误会导致什么不可逆结果 A 模板规则顺序不影响结果 B mapping 可随时修改字段类型 C 模板按字段名/检测类型匹配,按顺序先匹配先生效,更具体的规则应排在通用规则前,否则可导致错误映射且 mapping 不可原地修改需 reindex ✓ 正确答案 D 模板只能匹配字段名,不能匹配类型
# 18. ES 8.x Java API Client 的类型安全查询构建(lambda 构建器 vs JSON 字符串) A lambda 构建器无法表达复杂查询 B JSON 字符串有编译期类型检查 C 两种方式都不支持 bool 查询 D lambda 构建器类型安全、编译期检查字段方法,推荐使用;JSON 字符串灵活但无编译期检查,适合动态复用场景 ✓ 正确答案
# 19. Elasticsearch 8.x 的 Index Sorting 在高基数字段排序时的内存与磁盘代价如何权衡 A 高基数字段最适合 Index Sorting B Index Sorting 靠相近值集中提升范围查询局部性,但高基数字段值不集中、排序结构开销大,收益低代价高,应选低基数高频过滤字段 ✓ 正确答案 C Index Sorting 对任意字段收益相同 D Index Sorting 不消耗额外资源
# 20. Elasticsearch 8.x 的安全默认开启(TLS/HTTPS) A 8.x 默认关闭安全,与 7.x 相同 B 8.x 默认开启 TLS/HTTPS 加密与用户认证,首次启动自动生成证书,客户端需用 HTTPS+CA 证书+认证信息连接 ✓ 正确答案 C 8.x 无法使用 HTTPS D TLS 只加密不认证
# 21. Elasticsearch 与 OpenSearch 的边界 A OpenSearch 与 ES 8.x 完全等价 B OpenSearch 是 ES 7.10 的 Apache 2.0 fork,与 7.x 兼容,但 ES 8.x 与 OpenSearch 各自演进、API 已有差异,选择需考虑许可与生态 ✓ 正确答案 C OpenSearch 是 ES 的官方分支 D 两者 API 永远一致
# 22. Elasticsearch 主分片数量一旦创建为何难以原地修改,容量规划应如何权衡分片大小与并行度 A 主分片数可随时修改 B 主分片数由路由 hash 决定、创建后不可原地修改,需按数据量/单分片目标大小规划,分片多并行高但开销大、分片少单块大但慢 ✓ 正确答案 C 分片越多越好,无任何代价 D 单分片越大查询越快
# 23. Elasticsearch 的 ILM(Index Lifecycle Management) A ILM 只能删除索引 B ILM 通过策略定义 Hot/Warm/Cold/Delete 等 phase 及 rollover/shrink/forcemerge/delete 动作,自动管理索引生命周期与存储分层 ✓ 正确答案 C ILM 与 rollover 无关 D ILM 只能用于非时序数据
# 24. Elasticsearch 的 Mapping 与字段类型 A keyword 用于全文检索 B text 字段支持 term 精确聚合 C Mapping 字段类型可随时修改 D Mapping 定义字段类型与索引方式,text 分词用于全文检索、keyword 不分词用于精确匹配/聚合/排序,字段类型创建后大多不可修改 ✓ 正确答案
# 25. Elasticsearch 的 Mapping(Dynamic/Explicit) A Dynamic Mapping 永远是最好的选择 B Explicit Mapping 无法定义字段类型 C Dynamic Mapping 按 JSON 值自动推断类型、灵活但不可控,Explicit Mapping 显式定义类型可控,生产常用 explicit 配合 dynamic template ✓ 正确答案 D dynamic 参数只有 true/false 两态
# 26. Elasticsearch 的 PIT(Point In Time)一致性读 A PIT 与 scroll 完全相同 B PIT 创建时间点一致的索引视图,配合 search_after 实现稳定深分页,保证分页期间数据一致,是 ES 8 推荐的分页方式 ✓ 正确答案 C PIT 不保证数据一致 D PIT 是一次性查询,不能分页
# 27. Elasticsearch 的 Vector Search(HNSW)与语义搜索 A HNSW 是精确最近邻,无近似 B 向量检索只能用于图片 C 通过 dense_vector 存储向量、HNSW 图索引做近似近邻检索,支持余弦等度量,实现语义搜索并可配合 RAG 做文档问答 ✓ 正确答案 D 语义搜索与 BM25 完全无关
# 28. Elasticsearch 的 _source/stored_fields 的取舍 A _source 存原始 JSON 支持 reindex/脚本/部分更新但占存储,stored_fields 显式存指定字段快速返回,关闭 _source 会失去这些能力 ✓ 正确答案 B stored_fields 与 doc_values 作用相同 C _source 默认关闭 D 关闭 _source 不影响 reindex
# 29. Elasticsearch 的 bulk API 与批量导入 A bulk 一次只能写一条 B bulk 导入应频繁 refresh 提升性能 C bulk 用 NDJSON 一次提交多条操作减少往返,通过调批次大小、并发与 refresh 策略优化吞吐,可用 BulkProcessor 自动管理 ✓ 正确答案 D 批量导入无需处理 429
# 30. Elasticsearch 的 cat 命令族 A cat API 以紧凑表格返回集群健康、节点、索引、分片、线程池等信息,支持 ?v/?h/?s 等标志,是快速诊断集群问题的工具 ✓ 正确答案 B cat API 只能返回 JSON 大对象 C cat 命令无法查看分片状态 D cat 命令只能查看索引,不能查看节点
# 31. Elasticsearch 的 index.sort 与 _doc 排序 A _doc 排序按字段值排序 B index.sort 让文档按字段物理排序提升范围查询局部性,_doc 按段内存储顺序排序、零开销,适合 search_after 翻页 ✓ 正确答案 C _doc 排序开销最大 D index.sort 不改变文档顺序
# 32. Elasticsearch 的 keyword vs text 字段 A keyword 用于全文检索 B text 分词用于全文检索(match),keyword 不分词用于精确匹配/聚合/排序,同一字段可用 fields 同时定义 text 与 keyword ✓ 正确答案 C text 字段可直接做聚合 D 两者都分词,无区别
# 33. Elasticsearch 的 nested 与 join 字段 A nested 无额外存储代价 B nested 用于父子关系,join 用于数组对象 C join 父子文档可跨分片 D nested 把数组对象存为独立隐藏文档保证对象内字段关联,join 定义父子关系同分片存储支持 has_child 查询,两者都有查询/更新额外代价 ✓ 正确答案
# 34. Elasticsearch 的 pipeline 聚合与可视化 A pipeline 聚合无法引用其他聚合结果 B pipeline 聚合直接作用于源文档 C pipeline 聚合对父聚合结果做二次计算(如 derivative、moving_avg、bucket_script),可支撑趋势/变化率可视化 ✓ 正确答案 D pipeline 聚合只能求和
# 35. Elasticsearch 的 query_then_fetch 与 dfs_query_then_fetch A dfs_query_then_fetch 性能更好 B 两者评分完全相同 C query_then_fetch 分片本地评分性能好但多分片 IDF 有偏差,dfs_query_then_fetch 增加全局词频统计阶段评分更准但开销更大 ✓ 正确答案 D query_then_fetch 无 query 阶段
# 36. Elasticsearch 的 reindex 与数据迁移 A reindex 把数据复制到目标索引,用于 mapping 变更/分片调整/跨集群迁移,可并行切片、过滤、校验计数 ✓ 正确答案 B reindex 只能复制,不能过滤 C reindex 无需建目标索引 D reindex 无法跨集群
# 37. Elasticsearch 的 runtime fields A runtime fields 有独立索引,性能好 B runtime fields 在查询时动态计算、不占索引存储、灵活,但无索引加速、性能差,适合临时/低频分析,高频场景应改用索引字段 ✓ 正确答案 C runtime fields 写入时计算并存储 D runtime fields 无法用于聚合
# 38. Elasticsearch 的 search_after 与分页 A search_after 可以随机跳页 B from+size 做深分页受 max_result_window 限制且每分片取大量候选,search_after 用上一页排序值滚动取下一页,配合 PIT 与唯一 tiebreaker 适合深分页 ✓ 正确答案 C from+size 深分页无性能限制 D search_after 无需排序字段
# 39. Elasticsearch 的分词器(Analyzer)与中文分词(IK) A IK 分词器无需配置即可精准 B 分词器只有 standard 一种 C 索引与查询分词器必须相同 D Analyzer 由字符过滤、分词器、词项过滤组成,中文可用 IK 的 ik_max_word 细粒度索引与 ik_smart 查询,并配置自定义词典 ✓ 正确答案
# 40. Elasticsearch 的架构(Node/Cluster/Index/Shard) A 主分片数可随时修改 B 副本分片不参与读取 C 集群由节点组成,索引分成主分片(创建时固定、决定路由)与副本分片(高可用与读分摊),每个分片内部是 Lucene 索引 ✓ 正确答案 D 分片内部不是 Lucene
# 41. Elasticsearch 的查询 DSL(match/term/bool/agg) A term 用于全文检索,match 用于精确匹配 B filter 子句参与评分 C aggs 与 query 无法组合 D match 对 text 分词全文检索、term 对 keyword 精确匹配,bool 组合 must/filter/should/must_not,aggs 做聚合统计 ✓ 正确答案
# 42. Elasticsearch 的相关性评分(BM25)算法 A BM25 由饱和词频(k1 控制)、逆文档频率和文档长度归一化(b 控制)组成,b 越大长文档词频贡献被稀释越多 ✓ 正确答案 B b 参数控制词频饱和 C BM25 中词频越高得分线性无限增长 D IDF 与文档稀有度无关
# 43. Elasticsearch 的聚合(Aggregation) A 聚合依赖倒排索引 B 聚合分 metric(统计)、bucket(分桶)、pipeline(二次聚合)三类,依赖 doc_values,terms 聚合用 shard_size 控制分片候选 ✓ 正确答案 C pipeline 聚合直接作用于源文档 D text 字段聚合性能最佳
# 44. Elasticsearch 的近实时(NRT)搜索与 refresh A refresh_interval 越大可见性越高 B refresh 保证数据持久化 C 写入立即可见,无需 refresh D 数据写入后经 refresh 生成可搜索段才可见,默认每秒一次形成近实时,refresh 管可见性、translog/flush 管持久性,可调 refresh_interval 权衡 ✓ 正确答案
# 45. HNSW 向量检索叠加结构化过滤时,过滤选择性如何影响召回率与候选扩展参数 A 过滤不影响向量检索召回 B num_candidates 越大查询越快 C 先做近似近邻搜索再做过滤,过滤选择性高会削减候选导致召回下降,应增大 num_candidates 补偿候选并评估召回率 ✓ 正确答案 D 过滤选择性越强召回率越高
# 46. ILM 的 rollover 应按年龄、大小还是文档数触发,主分片差异会如何影响阈值 A rollover 只能按年龄触发 B 阈值基于整个索引含副本 C 主分片大小差异不影响 rollover D rollover 可按 max_age/max_size/max_docs 组合触发,阈值基于主分片总量,主分片分布不均时需用 max_primary_shard_size 避免单片过大 ✓ 正确答案
# 47. Lucene 段合并(merge)对写入性能的影响与 merge 策略(TieredMergePolicy) A TieredMergePolicy 总是合并最大与最小段 B merge 重写数据消耗 IO,写入频繁会触发 merge 风暴,TieredMergePolicy 按大小分层合并相近段、用 max_merged_segment 控制以平衡成本与段数 ✓ 正确答案 C merge 不影响写入性能 D 段合并只提升写入、不提升查询
# 48. from 加 size 的深分页为何让每个分片保留大量候选,超过窗口后有哪些替代方案 A 深分页时每个分片都要取 from+size 条候选再合并,from 越大开销越大,受 max_result_window 限制,可用 search_after+PIT 或 scroll 替代 ✓ 正确答案 B from+size 无深度限制 C 深分页每个分片只取 size 条 D scroll 最适合交互式深分页
# 49. nested 对象为何需要隐藏文档保持数组元素关系,查询与更新成本相比普通 object 高在哪里 A object 数组扁平化会丢失对象内字段关联,nested 用隐藏文档保持关联,但 nested 查询较慢且更新会重写整个父文档 ✓ 正确答案 B nested 更新只改单个对象 C nested 与 object 查询成本相同 D object 数组保持对象内关联
# 50. 使用 Elasticsearch 8.x 与 Spring AI 2.0 RAG 模式结合实现文档问答系统的工程实践 A 切块向量化写入 ES 的 dense_vector,问题向量化后用 kNN 检索相关块,再交给 Spring AI 的 LLM 结合上下文生成,并评估召回与答案质量 ✓ 正确答案 B RAG 无需向量检索 C Spring AI 只负责向量化,不参与生成 D 文档问答不需要切分文档
# 51. 动态字段无限增长为何会引发 mapping explosion,模板、字段上限和扁平对象如何治理 A 动态字段无限增长会膨胀 cluster state 元数据,可用 dynamic false/strict、字段总数上限、动态模板和 flattened 类型治理 ✓ 正确答案 B flattened 类型会为每个属性建字段 C 字段数量上限无法设置 D mapping 字段无限增长无影响
# 52. 同一字符串使用 text 与 keyword 多字段时,全文相关性、聚合和排序分别应选择哪一个 A 全文检索应用 keyword 字段 B 聚合与排序应用 text 字段 C 全文相关性检索用 text(分词),聚合与排序用 keyword(doc_values 精确),避免 text 聚合依赖 fielddata 的高内存 ✓ 正确答案 D keyword 支持分词全文检索
# 53. 向量量化能减少内存但可能损失召回,如何用离线标注集和线上指标验证取舍 A 量化不影响召回率 B 量化省内存但可能损失召回,需用离线标注集算 recall@k 等指标并结合线上业务指标验证,量化内存收益与召回损失后决定取舍 ✓ 正确答案 C 量化一定最优,无需验证 D 线上指标不能反映检索质量
# 54. 快照只保存增量分片数据但不是文件系统复制,跨版本恢复前需要验证哪些兼容限制 A 快照是文件系统完整复制,任何版本可恢复 B 跨版本恢复无需验证 C 快照是分片级增量备份(非文件系统复制),依赖 Lucene 段与元数据格式,跨版本恢复需验证版本兼容、mapping/settings 与数据完整性,必要时经中间版本过渡 ✓ 正确答案 D 快照恢复后无需检查 shard 健康
# 55. 提高 refresh_interval 能改善批量写吞吐,但会怎样影响实时搜索和 refresh 后等待语义 A refresh_interval 只影响持久性不影响可见性 B 调大 refresh_interval 减少刷新提升写吞吐,但降低搜索可见性且 refresh=wait_for 会等待更久,批量导入常用关闭 refresh 提升吞吐 ✓ 正确答案 C refresh=true 会降低写吞吐但提升可见性 D wait_for 与 refresh_interval 无关
# 56. 自定义 routing 如何把同一业务键定位到相同分片,路由倾斜会造成哪些热点问题 A routing 与分片分配无关 B routing 倾斜不会造成热点 C 所有文档必须用同一 routing D routing 通过 hash 把同一业务键路由到同一分片提升局部性,但业务键数据不均会造成热点分片,需拆分大键并监控分片负载 ✓ 正确答案
# 57. PIT 配合 search_after 如何提供稳定深分页,排序键为何必须包含唯一的 tiebreaker A PIT 提供一致视图、search_after 用上一页末条排序值滚动,排序键必须含唯一 tiebreaker(如 _shard_doc)避免并列导致翻页重复或遗漏 ✓ 正确答案 B search_after 无需排序字段 C 排序并列不影响翻页 D PIT 无法与 search_after 配合
# 58. refresh、flush 与 translog 分别影响搜索可见性和持久性,不能把它们混为一谈的原因是什么 A refresh 即持久化,保证数据不丢 B flush 与 refresh 作用相同 C refresh 让内存数据生成可搜索段管可见性,translog 记录日志防数据丢失,flush 把段 fsync 落盘并清 translog 管持久性,三者职责不同 ✓ 正确答案 D translog 只影响搜索可见性