概念介绍
具体请参考[elasticsearch内置分词器及字符过滤器][概念介绍]
es内置分析器
内置分析器可以直接使用,无需任何配置。然而,其中一些配置选项用来改变其行为
Standard Analyzer
standard(标准)分析器划分文本是通过词语来界定的,由Unicode文本分割算法定义。它删除大多数标点符号,将词语转换为小写,并支持删除停止词。
standard(标准)分析器是默认分析器,如果没有指定分析器,则使用该分析器
定义
- 分词器
- 标准分词器 standard
- 过滤器
- 标准过滤器 standard
- 小写过滤器 lowercase
- 停词过滤器 stop 默认情况禁用
配置可选项
- max_token_length //token最大长度,如果超多最大限度使用max_token_length间隔进行拆分,默认为255
- stopwords // 预定义的停止词列表,如_english或包含停止词列表的数组。默认为_none_。
- stopwords_path 停词路径 每个字单独一行,编码格式为UTF-8
示例
1 | PUT my_index |
Simple Analyzer
simple(简单)分析器每当遇到不是字母的字符时,将文本分割为词语。它将所有词语转换为小写。
定义
- 分词器
- 小写分词器 lowercase
示例
1 | POST _analyze |
Whitespace Analyzer
whitespace(空白)分析器每当遇到任何空白字符时,都将文本划分为词语。它不会将词语转换为小写。
定义
- 分词器
- 空白分词器 whitespace
示例
1 | POST _analyze |
Stop Analyzer
stop(停止)分析器类似simple(简单)分析器,默认添加english停用词
配置可选项
- stopwords 停用词列表
- stopwords_path 停用词路径
示例
1 | PUT my_index |
Keyword Analyzer
keyword(关键字)分析器是一个noop(空)分析器,可以接受任何给定的文本,并输出与单个词语相同的文本。
定义
- 分词器
- keyword
示例
1 | POST _analyze |
Pattern Analyzer
pattern(模式)分析器使用正则表达式将文本拆分为词语,它支持小写和停止字。
定义
- 分词器
- pattern
- 过滤器
- 小写过滤器
- 停词过滤器 默认禁用
配置可选项
- pattern java正则表达式 默认 \w
- flags
- lowercase 是否转为小写 默认为true
- stopwords 预先定义的停用词列表,如english或包含停用词列表的数组,默认为none
- stopwords_path 停词文件列表
示例
1 | PUT my_index |
Language Analyzers
Elasticsearch提供许多特定语言的分析器,例如english(英语)或french(法语)。
Fingerprint Analyzer
fingerprint(指纹)分析器是专门的分析器,可以创建用于重复检测的指纹。将重复的token删掉并重新排序生成一个新的token
定义
- 分词器
- 标准分词器
- 过滤器
- 小写过滤器
- asciifolding 过滤器
- 停词过滤器
- fingerprint 过滤器
配置可选项
- separator 用于拼接的字符,默认为空格
- max_output_size token最大长度,默认255,大于该值的token丢弃
- stopwords 停词列表,默认禁用
- stopwords_path 停词文件路径
示例
1 | PUT my_index |
Custom Analyzer
如果你没有找到适合你需求的分析器,则可以创建一个自定义分析器,结合适当的字符过滤器,分词器和词语过滤器。
配置
- tokenizer 分词器,内置或者自定义的tokenizer 必需
- char_filter 内置或自定义的字符过滤器
- filter 内置或自定义的token过滤器
内置tokenizer和filter,char_filter示例
1 | PUT my_index |
自定义tokenizer和filter,char_filter示例
1 | PUT my_index |