在 Elasticsearch 中,“配置分词”通常涉及 分词器(Analyzer)、分词器组件(Tokenizer + Token Filter + Char Filter) 的配置,以及在 索引(Index)或字段(Mapping)级别 的使用。下面按常见场景系统说明。
一个 Analyzer(分词器) 由三部分组成:
执行顺序:
原始文本 → Char Filters → Tokenizer → Token Filters
Elasticsearch 自带很多分词器,例如:
standard(默认)simplewhitespacekeyword(不分词)ik_max_word / ik_smart(需安装 IK 插件,中文常用)PUT /my_index
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "standard"
}
}
}
}
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"char_filter": ["html_strip"],
"tokenizer": "standard",
"filter": [
"lowercase",
"stop"
]
}
}
}
},
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
Elasticsearch 默认对中文是 按字切分,不适合搜索。
ik_max_word:细粒度ik_smart:粗粒度PUT /cn_index
{
"mappings": {
"properties": {
"text": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}
}
✅ 建议:
- 索引时用
ik_max_word- 搜索时用
ik_smart
POST /my_index/_analyze
{
"analyzer": "my_analyzer",
"text": "Elasticsearch 是一个搜索引擎"
}
或测试字段:
POST /my_index/_analyze
{
"field": "content",
"text": "测试中文分词效果"
}
需安装 pinyin 插件:
"filter": {
"pinyin_filter": {
"type": "pinyin"
}
}
"filter": {
"my_synonym": {
"type": "synonym",
"synonyms": [
"电脑,计算机,computer"
]
}
}
✅ 分词在 写入时 和 查询时 都可不同
✅ 修改 analyzer 必须重建索引
✅ keyword 类型不分词
✅ 中文一定要用中文分词器
如果你能告诉我:
我可以给你 直接可用的完整配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。