Elasticsearch - 分析

在搜索操作期间处理查询时,分析模块会分析任何索引中的内容.该模块由分析器,标记器,令牌过滤器和charfilters组成.如果未定义分析器,则默认情况下,内置分析器,令牌,过滤器和标记器将在分析模块中注册.例如.

POST http://localhost:9200/pictures

Request Body

{
   "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
            }
         }
      }
   }
}

分析师

分析器由一个标记器和可选的标记过滤器组成.这些分析器在逻辑名称的分析模块中注册,可以在映射定义或某些API中引用.有许多默认分析器如下 :

Sr.NoAnalyzer&描述
1

标准分析仪(标准)

可以为此分析仪设置停用词和max_token_length设置.默认情况下,停用词列表为空,max_token_length为255.

2

简单分析器(简单)

此分析器由小写标记器组成.

3

空白分析器(空格)

此分析器由空格标记器组成.

4

停止分析器(停止)

可以配置停用词和stopwords_path.默认情况下,停用词初始化为英语停用词,stopwords_path包含带停用词的文本文件的路径.

5

关键字分析器(关键字)

此分析器将整个流标记为单个标记.它可以用于邮政编码.

6

模式分析器(模式)

该分析器主要处理正则表达式.可以在此分析器中设置小写,模式,标志,停用词等设置.

7

语言分析器

此分析仪可处理印地语,阿拉伯语,图纸等语言.

8

雪球分析仪(雪球)

此分析仪使用标准标记器,标准过滤器,小写过滤器,停止过滤器和雪球过滤器.

9

自定义分析器(自定义)

此分析器用于创建带有可选令牌过滤器和字符过滤器的标记器的自定义分析器.可以在此分析器中配置tokenizer,filter,char_filter和position_increment_gap等设置.

标记符

标记生成器用于从Elasticsearch中的文本生成标记.通过考虑空格或其他标点,可以将文本分解为标记. Elasticsearch有很多内置的标记器,可以在自定义分析器中使用.

Sr.NoTokenizer&描述
1

标准标记器(标准)

这是基于基于语法的标记生成器构建的,可以为此标记生成器配置max_token_length.

2

Edge NGram tokenizer(edgeNGram)

可以为此tokenizer设置min_gram,max_gram,token_chars等设置.

3

关键字标记生成器(关键字)

这会生成整个输入作为输出,并且可以为此设置buffer_size.

4

Letter tokenizer(letter)

这会捕获整个单词,直到遇到非字母.

5

小写标记器(小写)

这同样有效作为字母标记器,但在创建标记后,它将它们更改为小写.

6

NGram Tokenizer(nGram)

min_gram之类的设置(默认值为1),max_gram(默认值为2),并且可以为此tokenizer设置token_chars.

7

空格标记器(空格)

这将文本分为空白的基础.

8

模式标记器(模式)

这使用正则表达式可以为此标记器设置模式,标志和组设置.

9

UAX电子邮件URL Tokenizer(uax_url_email)

这是有效的同样谎言标准的标记符,但它将电子邮件和URL视为单个标记.

10

路径层次结构标记生成器(path_hierarchy)

生成此标记生成器输入目录路径中存在的所有可能路径.此标记器可用的设置是分隔符(默认为/),替换,buffer_size(默认为1024),反向(默认为false)和跳过(默认为0).

11

经典标记器(经典)

这适用于基于语法的标记的基础.可以为此标记器设置max_token_length.

12

泰国标记器(泰国)

使用此标记生成器用于泰语并使用内置泰语分段算法.

令牌过滤器

令牌过滤器接收来自tokenizer的输入,然后这些过滤器可以修改,删除或添加该输入中的文本.Elasticsearch提供了大量的内置令牌过滤器.其中大部分已在前面的章节中进行了解释.

字符过滤器

这些过滤器处理标记化之前的文本.字符过滤器查找特殊字符或html标记或指定的模式然后删除或更改它们适当的单词如'&'和,删除html标记标签.这是一个分析器的例子,同义词在synonym.txt : 中指定;

{
   "settings":{
      "index":{
         "analysis":{
            "analyzer":{
               "synonym":{
                  "tokenizer":"whitespace", "filter":["synonym"]
               }
            },
				
            "filter":{
               "synonym":{
                  "type":"synonym", "synonyms_path":"synonym.txt", "ignore_case":"true"
               }
            }
         }
      }
   }
}