Elasticsearch 基础教程

Elasticsearch 高级教程

Elasticsearch 插件

Elasticsearch 笔记

elasticsearch(es)分析器(analyzer)内部执行顺序分析

Elasticsearch 笔记 Elasticsearch 笔记


es 不管是索引操作还是查询操作,都会经过分析器(analyzer),解析器主要做过滤(filter)和分词(tokenizer)操作。

分析器内部执行顺序

elasticsearch 的 analyzer 一般由三部分组成,分别是 character filters、tokenizers、token filters。它的执行顺序如下:

character filters -> tokenizers -> token filters

character filters 主要是字符过滤器,如 html 标签过滤器 html_strip

tokenizers 其实就是分词器,分词后的每个 term 叫 token,其中典型的第三方的中文分词器 ik_smart 等等。

token filters 是将第二步 tokenizers 的结果即每个 token 进行相应的变换,比如在这个阶段进行停用词(stop)过滤、小写化(lowercase)、同义词(synonmy)转换等等。

示例

{
  "index": {
    "analysis": {
      "filter": {
        "synonym": {
          "type": "synonym",
          "synonyms_path": "analysis/synonyms.txt"
        }
      },
      "analyzer": {
        "ik_smart_synonym": {
          "filter": [
            "synonym",
            "standard",
            "lowercase",
            "stop"
          ],
          "tokenizer": "ik_smart"
        }
      }
    }
  }
}