mapping中对应的field可以设置analyzer和searchAnalyzer,如果不设置的话,会使用setting设置的default analyzer,如果setting中没指定的话就会使用es默认的standard分词器了。查询时具体可通过explain API来查看具体分词细节及查询细节。
你用_mapping命令查询当前类型下的指定字段使用的是何种分析器
分词器使用的两个情形:
1,Index time analysis. 创建或者更新文档时,会对文档进行分词
PUT test_index
{
“mappings”: {
“doc”: {
“properties”: {
“title”:{
“type”: “text”,
“analyzer”: “whitespace”,
“search_analyzer”: “standard”
}
}
}
}
}
2,Search time analysis. 查询时,对查询语句分词
GET test_index/_search
{
“query”: {
“match”: {
“name”: {
“query”: “lin”,
“analyzer”: “standard”
}
}
}
}
索引时分词是通过配置 Index mapping中的每个字段的参数analyzer指定的
不指定分词时,会使用默认的standard
明确字段是否需要分词,不需要分词的字段将type设置为keyword,可以节省空间和提高写性能。
es内置很多分词器,但是对中文分词并不友好,例如使用standard分词器对一句中文话进行分词,会分成一个字一个字的。这时可以使用第三方的Analyzer插件,比如 ik、pinyin等。
https://www.cnblogs.com/xiaobaozi-95/p/9328948.html