2

前言

qbit 使用的 Elasticsearch 版本为 7.x
推荐学习阮一鸣《Elasticsearch 核心技术与实战
  • normalizer 之于 keyword,相当于 analyzer 之于 text

Analyzer 组成部分

分析器(analyzer)由三部分组成:字符过滤器(CharacterFilters)、分词器(Tokenizer)和词元过滤器(TokenFilters)。
Analyzer .png

analyzer / search_analyzer

  • 默认情况下,建索引(index)和搜索(search)都用同一个分析器(analyzer)
  • 在指定 search_analyzer 时,搜索用 search_analyzer 分析器

Analyzer 安装方法

  • 查看已安装哪些插件

    # cmd 安装后可见
    ./bin/elasticsearch-plugin list
    # url 安装、重启后可见
     http://10.10.10.10:9200/_cat/plugins
    # kibana
    GET /_cat/plugins
  • 安装内置 Analyzer(以 ICU 为例)

    ./bin/elasticsearch-plugin install analysis-icu
  • 安装 Github 上的 Analyzer(以 IK 为例)

    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
  • 安装本地的 zip 包

    # Linux
    ./bin/elasticsearch-plugin install file:///usr/share/es/download/plugin/elasticsearch-analysis-ik-7.4.2.zip
    
    # Windows
    ./bin/elasticsearch-plugin install file:///c:/path/to/elasticsearch-analysis-ik-7.4.2.zip
  • 免确认

    -b
    --batch

Analyzer 测试方法

内置分词器

POST _analyze
{
  "analyzer": "simple",
  "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}

自定义分词器

GET /_analyze
{
  "char_filter": ["html_strip"], 
  "tokenizer": "hanlp",
  "filter": [ "word_delimiter_graph", "lowercase",  "stop", "stemmer"],
  "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}

查看某个索引某个字段的分词

GET my_index/_termvectors/123?fields=title

内置 Analyzer 与 官方插件

英文 Analyzer

Standard Analyzer

中文 Analyzer

ICU

SmartCN

HanLP

IK

Pinyin

ansj

jieba

jcseg

相关阅读


qbit
268 声望279 粉丝