主题
自定义分析器
Elasticsearch 允许用户根据业务需求,自定义分析器(Analyzer),通过组合分词器(Tokenizer)、字符过滤器(Char Filter)和令牌过滤器(Token Filter)来实现个性化的文本处理和索引策略。
1. 自定义分析器组成
- 字符过滤器(Char Filter):预处理文本,如替换字符、HTML 标签处理
- 分词器(Tokenizer):将文本拆分为词项
- 令牌过滤器(Token Filter):对分词结果进行处理,如小写转换、同义词替换、停用词过滤
2. 创建自定义分析器示例
json
PUT /my-index
{
"settings": {
"analysis": {
"char_filter": {
"replace_filter": {
"type": "mapping",
"mappings": ["&=>和"]
}
},
"filter": {
"my_stop": {
"type": "stop",
"stopwords": ["的", "了", "和"]
}
},
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"char_filter": ["replace_filter"],
"tokenizer": "standard",
"filter": ["lowercase", "my_stop"]
}
}
}
}
}
该示例定义了一个自定义分析器 my_custom_analyzer
,包含字符替换、小写转换和停用词过滤。
3. 使用自定义分析器
指定索引时,设置字段使用该分析器:
json
PUT /my-index/_mapping
{
"properties": {
"content": {
"type": "text",
"analyzer": "my_custom_analyzer"
}
}
}
4. 注意事项
- 自定义分析器适合复杂文本处理需求
- 配置时需保证组件顺序合理,避免冲突
- 调试时可使用
_analyze
API 测试分析效果
通过自定义分析器,用户可以实现精准的文本解析与索引,提升搜索的相关性和灵活性。