Web Elasticsearch题目,你会怎么出题,考那些内容?
一、默认内置分词器
**1. 标准分词器 (Standard Analyzer) **
特点:
- 按空格和标点符号分割文本,支持多语言基础分词
- 中文默认单字切分(如「苹果手机」→ [苹, 果, 手, 机])
- 自动转小写,过滤标点符号
优点:通用性强,适合英文及简单多语言场景
缺点:中文分词效果差,无法识别语义
**2. 空格分词器 (Whitespace Analyzer) **
特点:
- 严格按空格分割文本,保留原始大小写和标点
- 中文需手动添加空格才能正确分词
优点:处理英文纯文本速度快
缺点:中文处理能力几乎为0,需额外预处理
**3. 关键词分词器 (Keyword Analyzer) **
特点:
- 将整个文本作为单个词条不进行分词
- 常用于精确匹配场景(如ID、状态字段)
优点:避免误分词,保障数据完整性
缺点:不支持模糊搜索和语义分析
二、中文专用分词器
**IK分词器 (IK Analyzer) **
特点:
- 中文专用开源分词器,支持ik_smart(粗粒度)和ik_max_word(细粒度)模式
- 内置超60万中文词库,支持扩展自定义词典
优点:
- 中文分词准确率高(如「苹果手机」→ [苹果, 手机])
- 支持热更新词典,适用于动态词库场景
缺点:
- 未登录词(如新网络词汇)处理能力有限
- 分词速度略低于标准分词器(约60万字/秒)
三、特殊用途分词器
1. NGram分词器 36
特点:
- 将文本按N-Gram模式切分(如「微信」→ [微, 信, 微信])
- 支持配置min_gram和max_gram控制切分长度
优点:支持模糊搜索和部分匹配(如邮箱后缀搜索)
缺点:索引体积膨胀严重,内存消耗高
**2. 正则分词器 (Pattern Analyzer) **
特点:
- 基于正则表达式定义分割规则(如按数字、特殊符号分割)
- 支持自定义正则模式适配业务需求
优点:灵活性高,适合非结构化文本处理
缺点:正则配置复杂度高,性能低于预设分词器
**3. 停用词分词器 (Stop Analyzer) **
特点:
- 在标准分词器基础上过滤停用词(如英文的and/the,中文需自定义)
- 减少无效词条,提升搜索效率
优点:降低索引冗余,加速查询性能
缺点:需手动维护停用词表,中文支持较弱
四、高级扩展方案
**自定义分词器 **
组成模块:
- 字符过滤器:预处理文本(如去除HTML标签)
- 分词器:核心切分逻辑(如ICU分词器支持多语言)
- 词项过滤器:后处理(如小写转换、同义词扩展)
一、选择题(每题2分,共10分)
Elasticsearch的节点类型中,负责管理集群元数据和分片分配的是?
A. 数据节点
B. 主节点
C. 协调节点
D. 摄取节点
答案:B
以下哪种分词器最适合中文语义分词场景?
A. 标准分词器(Standard Analyzer)
B. IK分词器(IK Analyzer)
C. 空格分词器(Whitespace Analyzer)
D. NGram分词器
答案:B
二、简答题(每题5分,共20分)
简述Elasticsearch倒排索引的工作原理及其优势。
答案:倒排索引通过建立“词项→文档ID”映射提升检索效率,支持全文搜索和快速定位文档。相较于正排索引,倒排索引更适合处理非结构化数据的高效查询。
列举保证数据库与Elasticsearch索引数据同步的三种策略。
答案:
- 基于数据库Binlog的实时同步(如Canal+Logstash)
- 应用程序双写(事务内同步更新数据库和ES)
- 定时批处理任务(对比差异数据并增量更新)
三、设计题(15分)
设计一个支持高并发查询的电商商品搜索服务,要求:
- 支持关键词、价格区间、商品类目多维度检索
- 数据量级为PB级,写入延迟低于1秒
- 提供容灾和水平扩展能力
参考答案:
架构设计:
- 使用多节点集群架构,分离主节点、数据节点和协调节点角色
- 分片策略:每个索引设置5个主分片+1副本分片,分散数据压力
查询优化: - 结合布尔查询(Bool Query)整合多条件过滤
- 对价格字段使用range查询,类目字段使用term精确匹配
容灾扩展: - 通过ILM策略实现冷热数据分层存储,优化资源利用率
- 监控分片负载,动态调整分片分配策略
四、案例分析题(15分)
场景:某日志分析系统使用Elasticsearch存储日志,发现查询性能逐渐下降。当前集群有10个节点,索引按天创建,分片数为3,副本数为1。
问题分析:
性能下降可能原因:
- 分片数量不足导致单个分片数据量过大(如单日日志超过50GB)
- 未清理历史索引,碎片化严重,影响合并效率
优化方案:
- 调整分片策略:按日志量动态设置分片数(如每分片20GB数据)
- 启用索引生命周期管理(ILM),自动删除过期索引及合并碎片
- 使用Rollover API实现索引自动滚动创建