ES分析器解析

es的分析器往往包括3个低级构建块包:

  • character filters - 字符过滤器,可以添加、删除或更改字符来转换流,一个分析器可有多个字符过滤器;
  • tokenizer - 标记器,接受字符流,将其分解成单独的标记,并输出标记流,一个分析器只能有一个标记器;
  • token filters - token过滤器,接受token流,并可以添加、删除或修改token,不允许更改每个token的位置或字符偏移量,一个分析器可有多个token过滤器,并按顺序应用。

测试分析器

指定索引引用分析器

PUT my_index 
{
  "settings": {
    "analysis": {
      "analyzer": {
        "ik": {                //自定义一个名为std_folded的分析器
          "type": "custom",                //type自定义
          "tokenizer": "ik_smart",                //指定标记器                      
          "filter": [                //指定字符过滤器
            "lowercase",
            "asciifolding"
          ]
        }
      }
    }
  },
  "mappings": {                //设置映射
    "my_type": {
      "properties": {
        "my_text": {                //指定字段
          "type": "text",                //设置type,String类型已被废弃,用text或keyword
          "analyzer": "ik"                //指定分析器为上文定义的自定义分析器
        }
      }
    }
  }
}

测试分析器效果

GET my_index/_analyze 
{
  "analyzer": "std_folded",                 //按分析器名指定分析器
  "text":     "这里有最及时的动漫新番,最棒的ACG氛围,最有创意的Up主"                //指定要分析的文本
}

测试字段指定的分析器效果

GET my_index/_analyze 
{
  "field": "my_text",                  //参考字段my_text使用的分析器
  "text":  "这里有最及时的动漫新番,最棒的ACG氛围,最有创意的Up主"
}

Elasticsearch提供的内置analyzers

Standard Analyzer

标准分析仪按照Unicode文本分段算法的定义,将文本分割成单词边界的分词。它删除了大多数标点符号,小写显示分词,并支持删除stop words。

Simple Analyzer

当遇到不是字母的字符时,简单的分析器会将文本分成条目。小写显示分词。

Whitespace Analyzer

空格分析器遇到任何空格字符时都会将文本分为多个项目。不会把分词转换为小写字母。

Stop Analyzer

停止分析仪和Simple Analyzer类似,但也支持stop words的删除。

Keyword Analyzer

一个“noop”分析器,它可以接受任何给定的文本,并输出完全相同的文本作为一个单词。

Pattern Analyzer

使用正则表达式拆分分词,支持lower-casing和stop words。

Language Analyzers

Elasticsearch提供许多语言特定的分析器,如英语或法语。

Fingerprint Analyzer

一个专门的分析仪,它可以创建一个可用于重复检测的指纹。

你可能感兴趣的:(ES分析器解析)