当前位置: 首页 > news >正文

Elasticsearch 核心:分析器(Analyzer)组成部分及作用全解析

Elasticsearch 核心:分析器(Analyzer)组成部分及作用全解析

    • 一、前言
    • 二、基础概念:什么是 Elasticsearch 分析器?
      • 2.1 核心定义
      • 2.2 分析器核心价值
    • 三、分析器的三大组成部分(必考+核心)
      • 3.1 分析器组成结构流程图
    • 四、三大组成部分详细讲解(作用+原理+示例)
      • 4.1 第一部分:Character Filter(字符过滤器)
        • 4.1.1 作用(文本预处理)
        • 4.1.2 特点
        • 4.1.3 常见类型
        • 4.1.4 示例
      • 4.2 第二部分:Tokenizer(分词器)【核心】
        • 4.2.1 作用(切分词语)
        • 4.2.2 特点
        • 4.2.3 常见类型
        • 4.2.4 示例
      • 4.3 第三部分:Token Filter(词条过滤器)
        • 4.3.1 作用(词条精加工)
        • 4.3.2 特点
        • 4.3.3 常见类型
        • 4.3.4 示例
    • 五、分析器完整执行流程(一步一步看懂)
      • 原始文本
      • 执行步骤
    • 六、三大组件对比总结表
    • 七、分析器在 ES 中的两个使用时机
      • 7.1 写入时(索引分析器)
      • 7.2 查询时(搜索分析器)
    • 八、自定义分析器示例(可直接使用)
    • 九、总结(最重要的3句话)

🌺The Begin🌺点点关注,收藏不迷路🌺

一、前言

在 Elasticsearch 中,分析器(Analyzer)是全文检索能够实现“分词、匹配、搜索”的绝对核心。无论是写入数据构建倒排索引,还是查询时解析关键词,都离不开分析器。

很多新手搞不懂:为什么数据存进去搜不到?为什么分词不符合预期?本质都是不了解分析器的组成和作用

本文将用最通俗的语言 + 流程图 + 结构化讲解,带你彻底掌握 Elasticsearch 分析器的三大组成部分、各自作用、执行流程、工作原理

全文严格遵循 CSDN 博客格式:带序号、标准标题、流程图、可直接发布。


二、基础概念:什么是 Elasticsearch 分析器?

2.1 核心定义

  1. 分析器(Analyzer)是一个文本处理工具,本质是一段处理流程。
  2. 作用:把一段文本 → 拆分成一个个词条(Term),并对词条进行标准化处理。
  3. 应用场景:
    • 写入文档时:对text类型字段分词,构建倒排索引
    • 搜索时:对用户输入的关键词分词,进行匹配

2.2 分析器核心价值

没有分析器,就没有 ES 的全文检索、模糊匹配、智能搜索


三、分析器的三大组成部分(必考+核心)

一个完整的 Elasticsearch 分析器固定由 3 部分组成

  1. Character Filter(字符过滤器)
  2. Tokenizer(分词器)
  3. Token Filter(词条过滤器)

3.1 分析器组成结构流程图

原始文本

Character Filter
字符过滤器
1. 清理HTML 2. 替换特殊字符

Tokenizer
分词器
按照规则切分词语

Token Filter
词条过滤器
小写/去停用词/同义词/去重

最终词条
用于构建倒排索引/搜索匹配

执行顺序:固定从上到下执行!


四、三大组成部分详细讲解(作用+原理+示例)

4.1 第一部分:Character Filter(字符过滤器)

4.1.1 作用(文本预处理)
  1. 在分词之前,对原始文本进行清洗、过滤、替换
  2. 处理对象:整个字符串
  3. 主要任务:
    • 去除 HTML 标签
    • 替换特殊符号
    • 过滤无用字符
    • 转换特殊内容
4.1.2 特点
  • 可以有0个、1个或多个
  • 不切分文本,只修改文本
4.1.3 常见类型
  • html_strip:清除 HTML 标签
  • mapping:字符替换(如:& → and)
  • pattern_replace:正则替换
4.1.4 示例

原始文本:<h1>Hello ES&World</h1>
处理后:Hello ES and World


4.2 第二部分:Tokenizer(分词器)【核心】

4.2.1 作用(切分词语)
  1. 分析器的核心组件,唯一必须存在的组件
  2. 作用:将一段完整文本,按照指定规则切分成一个个词条(Token)
  3. 决定:文本到底怎么拆分!
4.2.2 特点
  • 有且仅有 1 个,不能没有
  • 决定分词粒度、规则、效果
4.2.3 常见类型
  • standard:标准分词(默认)
  • ik_max_word:IK 中文分词
  • whitespace:按空格分词
  • keyword:不分词
  • pattern:正则分词
4.2.4 示例

文本:我是中国人
IK 分词后:[我, 是, 中国, 中国人]


4.3 第三部分:Token Filter(词条过滤器)

4.3.1 作用(词条精加工)
  1. 对分词后的词条流进行二次处理
  2. 处理对象:切分后的词条
  3. 可执行操作:
    • 转小写
    • 删除停用词(的、了、is、the)
    • 添加同义词
    • 去重
    • 拼音转换
    • 前缀处理
4.3.2 特点
  • 可以有0个、1个或多个
  • 按顺序执行
4.3.3 常见类型
  • lowercase:转小写
  • stop:去停用词
  • synonym:同义词
  • unique:去重
  • pinyin:拼音转换
4.3.4 示例

分词后:[I, LOVE, MY, China]
处理后:[love, china](小写 + 去停用词)


五、分析器完整执行流程(一步一步看懂)

原始文本

我爱《Elasticsearch》核心技术

执行步骤

  1. Character Filter
    去除特殊符号 →我爱Elasticsearch核心技术

  2. Tokenizer
    IK 分词 →[我, 爱, Elasticsearch, 核心, 技术]

  3. Token Filter

    • 小写转换 →elasticsearch
    • 去停用词 → 去掉
    • 最终词条 →[爱, elasticsearch, 核心, 技术]

六、三大组件对比总结表

组件名称执行顺序数量要求主要作用处理对象
Character Filter第1步0~N文本预处理、清洗、替换完整字符串
Tokenizer第2步必须1个切分词语、生成词条完整字符串
Token Filter第3步0~N词条标准化、增删改分词后的词条

七、分析器在 ES 中的两个使用时机

7.1 写入时(索引分析器)

文档 → 分析器 → 分词 → 构建倒排索引

7.2 查询时(搜索分析器)

用户关键词 → 分析器 → 分词 → 匹配倒排索引

重点:写入和查询必须使用同一个分析器,否则搜不到数据!


八、自定义分析器示例(可直接使用)

PUT /my_index { "settings": { "analysis": { "char_filter": { "my_char_filter": { "type": "html_strip" // 清除HTML } }, "tokenizer": "ik_max_word", // IK中文分词 "filter": [ "lowercase", // 小写 "stop" // 去停用词 ], "analyzer": { "my_analyzer": { "char_filter": ["my_char_filter"], "tokenizer": "ik_max_word", "filter": ["lowercase", "stop"] } } } } }

九、总结(最重要的3句话)

  1. 分析器 = 字符过滤器 + 分词器 + 词条过滤器
  2. Tokenizer 是核心,必须有且仅有一个
  3. 执行流程:先清洗 → 再分词 → 最后标准化

理解分析器的三大组成部分,你就掌握了 Elasticsearch 全文检索的底层灵魂



🌺The End🌺点点关注,收藏不迷路🌺
http://www.jsqmd.com/news/681390/

相关文章:

  • 别再只会用bar3画图了!MATLAB三维柱状图进阶玩法:从数据导入到配色美化全流程
  • 从D3 0_到MSM:RTCM3.2协议帧结构深度解析与实战解码
  • 智能网盘直链解析工具:告别会员限制,轻松实现高速下载
  • 实现用esp32自动配网功能。
  • 如何快速实现Rhino到Blender的无缝数据转换:5大实战技巧
  • LinkSwift:一站式网盘文件直链解析解决方案
  • 从AnyNet到ACVNet:用PyTorch复现4个经典立体匹配网络(附完整代码)
  • Elasticsearch 高性能优化:索引阶段性能优化全攻略
  • 从Pikachu靶场实战出发:用Python脚本自动化搞定SQL盲注(布尔/时间)
  • 从沉闷到灵动:用TranslucentTB重新定义Windows任务栏的视觉体验
  • 告别网盘限速烦恼:8大平台直链下载助手完整指南
  • N_m3u8DL-CLI-SimpleG:三步搞定M3U8视频下载的终极图形界面工具
  • 别再死记硬背DenseNet结构了!用PyTorch从零搭建,带你搞懂Growth Rate和Transition Layer
  • 从‘直纹面’到‘圆柱性面’:一个经典二元极限不存在函数的几何物理解读
  • Elasticsearch 核心:分词功能实现原理全解析
  • 如何选择速冻青豆生产厂家,全国范围内靠谱的盘点 - 工业设备
  • 百度网盘直连解析工具:三步实现文件高速下载突破
  • Linux RS485串口驱动移植实战--以Rockchip与Amlogic平台为例
  • 3步完成图像矢量化:用vectorizer将PNG/JPG转换为高质量SVG的完整指南
  • EasyExcel读取性能优化实战:除了空行过滤,你的批处理监听器还能这样玩
  • 网盘直链获取工具:跨平台文件下载效率提升方案
  • 如何快速部署英雄联盟云顶之弈自动化工具:面向初学者的完整实战指南
  • 2026年OPC办公空间家具源头厂家价格比较,北京地区哪家实惠 - myqiye
  • GLPI安装总报错?这份CentOS 7下的“保姆级”排错指南请收好(附PHP模块、文件权限详解)
  • Vectorizer实战指南:如何用JavaScript将PNG/JPG智能转换为可编辑SVG矢量图
  • 我的MobileViT训练翻车实录:从数据集坑到学习率调参,这些PyTorch细节新手一定要注意
  • 别再只画散点图了!用Python的sklearn和matplotlib,5分钟搞定PCA双标图(含置信椭圆绘制)
  • TTS-Backup终极指南:一键保护你的Tabletop Simulator游戏数据
  • Windows任务栏美化终极指南:用TranslucentTB实现透明、模糊与亚克力效果
  • Elasticsearch 查询性能优化终极指南:从原理到实战,彻底降低查询延迟