Elasticsearch 的检索能力源于 Lucene 的倒排索引:将文档内容切分为词项(Term),并记录每个词项出现的文档列表(Postings List)。
一、分词器组成
分词器(Analyzer)由三部分组成:
- Character Filter:字符预处理,如去除 HTML 标签
- Tokenizer:切分为词项,如
standard、ik_max_word - Token Filter:词项归一化,如小写转换、同义词、停用词
二、中文分词配置示例
json
PUT /articles
{
"settings": {
"analysis": {
"analyzer": {
"zh_analyzer": {
"type": "custom",
"tokenizer": "ik_max_word",
"filter": ["lowercase"]
}
}
}
}
}合理选择 ik_max_word(细粒度)与 ik_smart(粗粒度)可平衡召回率与查询性能。对只读历史索引执行 force_merge 可减少段数量并提升检索速度。