Elasticsearch(ES)分词器(Analyzer)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS

Elasticsearch ES (本章节)

我们上个小节介绍倒排索引,里面有一个比较核心的概念就是系统能正常识别里面的单词,比如上个小节里面涉及到的几个单词:apple banana cherry date ,但是实际上一个ES里面存储的数据又何止千千万,他们就是通过分词来实现的。

在 Elasticsearch(ES)中,分词(Tokenization) 是文本处理流程中的核心环节,它将原始文本(如一句话、一段文档)拆分成一个个有意义的最小单元(称为 词项 / Token),这些词项会被存入倒排索引,成为后续搜索匹配的基础。简单来说,分词的目的是:将人类可理解的自然语言,转化为机器可高效检索的 “索引词”,同时兼顾语义准确性和搜索效率。

一、分词的基本流程

ES 的分词过程通常包含三个主要步骤,由 分词器(Analyzer) 统一完成:

  1. 字符过滤(Character Filter)对原始文本进行预处理,比如去除 HTML 标签、替换特殊字符(如将 “&” 替换为 “and”)等。例:将 <p>Hello, World!</p> 处理为 Hello, World!

  2. 分词(Tokenizer)将过滤后的文本按规则拆分成词项(Token)。拆分规则可能基于空格、标点、特定语言的语法(如中文的词语边界)等。例:将 “Hello, World!” 拆分为 ["Hello", "World"];将 “我爱 elasticsearch” 拆分为 ["我", "爱", "elasticsearch"](需中文分词器支持)。

  3. 词项过滤(Token Filter)对拆分后的词项进行二次处理,常见操作包括:

    • 小写转换(如 “Hello”→“hello”)

    • 去除停用词(如英文的 “the”“is”,中文的 “的”“了”)

    • 词干提取(如 “running”→“run”)

    • 同义词替换(如 “高兴”→“开心”)

二、ES 中的分词器类型

ES 内置了多种分词器,适用于不同场景,也支持自定义分词器:

1. 内置分词器(常用)
  • Standard Analyzer(默认):按 Unicode 标准拆分文本,去除标点,将词转为小写,适用于大多数语言(但对中文支持较差,会逐字拆分)。
    例:“Quick Brown Foxes!” → ["quick", "brown", "foxes"]

  • Simple Analyzer:按非字母字符拆分,将词转为小写(比 Standard 更简单,不处理词干)。例:“Hello, World! 123” → ["hello", "world"]

  • Whitespace Analyzer:仅按空格拆分,不做小写转换或其他处理,保留原始字符。例:“Hello World! 你好” → ["Hello", "World!", "你好"]

  • Stop Analyzer:在 Simple Analyzer 基础上,去除停用词(如英文的 “a”“an”“the”)。例:“The quick brown fox” → ["quick", "brown", "fox"]

  • Keyword Analyzer:不做任何分词,将整个文本作为一个词项(适用于精确匹配,如 ID、手机号)。例:“Hello World” → ["Hello World"]

2. 中文分词器(需额外安装)

由于中文没有空格分隔,且词语边界模糊(如 “南京市长江大桥” 可拆分为 “南京市 / 长江大桥” 或 “南京 / 市长 / 江大桥”),内置分词器无法满足需求,需使用专门的中文分词器:

  • IK Analyzer:最常用的中文分词器之一,支持 “智能分词”(粗粒度)和 “最大词长分词”(细粒度),可自定义词典(添加行业术语)。例:“我爱北京天安门” → 智能分词:["我", "爱", "北京", "天安门"]。

  • HanLP Analyzer:基于 HanLP 自然语言处理库,支持更精准的分词、词性标注、命名实体识别(如人名、地名)。

  • Jieba Analyzer:移植自 Python 的 Jieba 分词,支持自定义词典和并行分词,适合处理大量中文文本。

这里通过分词的介绍,就是为了让大家更好地理解ES实现快速搜索的底层技术原理。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值