多字段特性和自定义Analyzer
目录
多字段特性
- 增加一个keyword字段,实现精确匹配
- 使用不同的analyzer
- 不同语言
- Pinyin 字段搜索 子字段 拼音分词
- 为搜索和索引指定不同的analyzer
精确值和全文本
- 精确值:数字,日期,具体的一个字符串(例如:”Apple store“),es中的keyword
- 全文本:非结构化的文本数据,es中的text,会进行分词
精确值在索引的时,不需要做特殊的分词处理
自定义分词
- 当es自带的分词器无法满足时,可以自定义分词器。通过组合不同的组件实现
- Character Filter
- Tokenizer
- Token Filter
Character Filter
-
在 Tokenizer之前对文本进行处理,例如增加,删除,替换字符。可以配置多个Character Filter。会影响Tokenizer的position和offset信息
-
一些自带的Character Filters
- HTML strip : 去除 html标签
- Mapping:字符串替换
- Pattern replace : 正则匹配替换
Tokenizer
- 将原始的文本按一定规则,切分为词(term or token)
- es内置的Tokenizers
- Whitespace / standard / uax_url_email/ pattern/keyword/path hierarchy
- 可以用Java开发插件,实现自己的tokenizer
token Filters
- 将Tokenizer输出的单词(term),进行增删改
- 自带的Token Filters
- lowercase/stop/synonym(添加近义词)
|
|