查看 Elasticsearch 分析器
分析器决定了文本字段如何被拆分和索引,选择合适的分析器可以提高搜索的精度和效率。
那么,如何查看 Elasticsearch 中使用的什么分词器呢?
要查看 Elasticsearch 中使用的分析器,可以查看索引的映射信息。
GET /<index name>/_mapping
常见索引及其特点:
-
标准分析器(standard analyzer):标准分析器是 Elasticsearch 默认使用的分析器。它将文本划分为小写形式的单词,并去掉停用词(the、is 等)。标准分析器还进行了一些 token 过滤,例如去除数字、符号等。标准分析器适用于大部分情况下的文本搜索。
-
简单分析器(simple analyzer):简单分析器不进行分词,只将输入字符串分成小写的单词,去掉停用词并进行过滤。它适用于非常规的文本分析,例如单词短、不需要分词的场景。
-
语言分析器(language analyzer):语言分析器专门针对不同语言的文本进行分析。例如,中文分析器使用中文分词技术将文本分成中文单词。语言分析器可以提高分析的准确性和效率。
-
较为高级的分析器:
-
自定义分析器(custom analyzer):自定义分析器可以根据具体需求定制各种分析器组件,例如字符过滤器(char filter)、分词器(tokenizer)和标记过滤器(token filter)等。自定义分析器适用于需要更精细的文本处理场景。
-
edge n-gram 分析器:edge n-gram 分析器可以生成一组从词首开始的较短字符片段,用于实现搜索关键字前缀匹配。
-
n-gram 分析器:与 edge n-gram 分析器不同,n-gram 分析器会生成全部字符片段,可以用于实现搜索任意位置匹配。
例子:
product_name 字段使用的是 standard_analyzer;
description 字段则使用的是 chinese_analyzer 分析器;
PUT /my_index
{
"mappings": {
"properties": {
"product_name": {
"type": "text",
"analyzer": "standard_analyzer"
},
"description": {
"type": "text",
"analyzer": "chinese_analyzer"
}
}
}
}