分析
当在搜索操作期间处理查询时,分析模块分析任何索引中的内容.该模块由analyzer, tokenizer, tokenfilters和charfilters组成.如果未定义分析器,则默认情况下,内置analyzers, token, filters和tokenizers将在分析模块中注册.例如.
POST /pictures
{
"settings": {
"analysis": {
"analyzer": {
"index_analyzer": {
"tokenizer": "standard", "filter": [
"standard", "my_delimiter", "lowercase", "stop",
"asciifolding", "porter_stem"
]
},
"search_analyzer": {
"tokenizer": "standard", "filter": [
"standard", "lowercase", "stop", "asciifolding", "porter_stem"
]
}
},
"filter": {
"my_delimiter": {
"type": "word_delimiter",
"generate_word_parts": true,
"catenate_words": true,
"catenate_numbers": true,
"catenate_all": true,
"split_on_case_change": true,
"preserve_original": true,
"split_on_numerics": true,
"stem_english_possessive": true
}
}
}
}
}
分析器
分析器由tokenizer和可选的token filter组成.这些分析器以逻辑名称注册在分析模块中,这些逻辑名称可以在映射定义中引用,也可以在一些API中引用.有如下几种默认分析仪
1.Standard analyzer (standard):可以为此分析器设置stopwords和max_token_length设置.默认情况下,stopwords列表为空,最大令牌长度为255.
2.Simple analyzer (simple):该分析器由小写标记器组成.
3.Whitespace analyzer (whitespace):该分析器由空白标记器组成.
4.Stop analyzer (stop):可以配置stopwords和stopwords_path.默认情况下,stopwords初始化为英文stopwords,stopwords_path包含一个包含stop words的文本文件的路径.
5.Keyword analyzer (keyword):该分析器将整个流标记为单个标记.它可以用作邮政编码.
6.Pattern analyzer (pattern):这个分析器主要处理正则表达式.像小写、模式、标志、停止字这样的设置可以在这个分析器中设置.
7.Language analyzer:这个分析器处理印地语、阿拉伯语、管道语等语言.
8.Snowball analyzer (snowball):该分析器使用标准令牌化器,带有标准过滤器、小写过滤器、停止过滤器和雪球过滤器.
9.Custom analyzer (custom):该分析器用于创建带有令牌化器的定制分析器,令牌化器带有可选的令牌过滤器和计费过滤器.可以在此分析器中配置令牌化器、过滤器、char_filter和position_increment_gap等设置.
令牌化器
令牌化器用于从ElasticSearch中的文本生成令牌.通过考虑空格或其他标点符号,文本可以被分解成记号.ElasticSearch有很多内置的标记器,可以在自定义分析器中使用.
1.Standard tokenizer (standard):基于语法的令牌化器,可以为此令牌化器配置max_token_length.
2.Edge NGram tokenizer (edgeNGram):为此令牌化器设置min_gram、max_gram、token_chars等设置.
3.Keyword tokenizer (keyword):生成整个输入作为输出,并且可以为此设置缓冲区大小.
4.Letter tokenizer (letter):捕获整个单词,直到遇到一个非字母.
5.Lowercase tokenizer (lowercase):与Letter tokenizer的工作原理相同,但是在创建令牌后,它会将其更改为小写.
6.NGram Tokenizer (nGram):为此令牌化器设置min_gram(默认值为1)、max_gram(默认值为2)和token_chars等设置.
7.Whitespace tokenizer (whitespace):根据空白分隔文本.
8.Pattern tokenizer (pattern):使用正则表达式作为令牌分隔符.可以为此令牌化器设置模式、标志和组设置.
9.UAX Email URL Tokenizer (uax_url_email):与lie标准令牌化器相同,但它将电子邮件和网址视为单一令牌.
10.Path hierarchy tokenizer (path_hierarchy):该令牌化器生成输入目录路径中存在的所有可能路径.此令牌化器可用的设置有分隔符(默认为/)、替换、缓冲区大小(默认为1024)、反转(默认为false)和跳过(默认为0).
11.Classic tokenizer (classic):在基于语法的标记的基础上工作的.可以为此令牌化器设置max_token_length.
12.Thai tokenizer (thai):该标记器用于泰语,并使用内置的泰语分段算法.
令牌过滤器
令牌过滤器从令牌化器接收输入,然后这些过滤器可以修改、删除或添加输入中的文本.ElasticSearch提供了大量内置令牌过滤器.其中大部分已经在前面的章节中解释过了.
字符过滤器
这些过滤器在标记器之前处理文本.字符过滤器查找特殊字符或html标记或指定的模式,然后要么删除它们,要么将其更改为适当的单词,如“&”和“删除html标记”.以下是同义词. txt中指定了同义词的分析器示例
{
"settings":{
"index":{
"analysis":{
"analyzer":{
"synonym":{
"tokenizer":"whitespace", "filter":["synonym"]
}
},
"filter":{
"synonym":{
"type":"synonym", "synonyms_path":"synonym.txt", "ignore_case":"true"
}
}
}
}
}
}