一文教会你 分词器elasticsearch-analysis-ik 的安装使用【自定义分词库】

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 这篇文章是关于如何在Elasticsearch中安装和使用ik分词器的详细教程,包括版本匹配、安装步骤、分词测试、自定义词库配置以及创建使用ik分词器的索引的方法。

文章目录

  • 1、安装 ik 分词器
    • 1.1 查看版本匹配
    • 1.2 下载对应版本的分词器
    • 1.3 安装、查看
  • 2、测试分词器
    • 1.1 默认分词器
    • 1.2 使用分词器(1)
    • 1.3 使用分词器(2)
  • 3、自定义词库
    • 3.1 修改IKAnalyzer.cfg.xml
    • 3.2 nginx的设置
    • 1.3 测试
    • 5、后语

前言
一个 tokenizer(分词器)接收一个字符流,将之分割为独立的 tokens(词元,通常是独立的单词),然后输出 tokens 流。
例如,whitespace tokenizer 遇到空白字符时分割文本。它会将文本 “Quick brown fox!” 分割为 [Quick, brown, fox!]。
该 tokenizer(分词器)还负责记录各个 term(词条)的顺序或 position 位置(用于 phrase 短语和 word proximity 词近邻查询),以及 term(词条)所代表的原始 word(单词)的 start(起始)和 end(结束)的 character offsets(字符偏移量)(用于高亮显示搜索的内容)。
Elasticsearch 提供了很多内置的分词器,可以用来构建 custom analyzers(自定义分词器)。

安装elasticsearch-analysis-ik分词器需要和elasticsearch的版本匹配。我第一次安装没有匹配版本就导致分词器不能使用、安装后还报错

1、安装 ik 分词器

1.1 查看版本匹配

这里也有个小坑、我的是elasticsearch版本是7.17.2 ,然后这个版本也没说8.几的不能用,第一次装了一个最新的版本;装完后、发现版本不匹配。又重新下载安装了同一个版本的elasticsearch-analysis-ik

版本对应位置:https://github.com/medcl/elasticsearch-analysis-ik/blob/master/README.md
在这里插入图片描述

1.2 下载对应版本的分词器

分词器 https://github.com/medcl/elasticsearch-analysis-ik

在这里插入图片描述

1.3 安装、查看

直接将文件解压,放入到plugins目录下。如果你进行了目录挂载,就可以在容器外部操作。我这里进行了挂载,只需要将解压后的文件放入到对应挂载目录就可以。

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、测试分词器

1.1 默认分词器

POST _analyze
{
  "text": "我是中国人"
}

在这里插入图片描述


1.2 使用分词器(1)

POST _analyze
{
  "analyzer": "ik_smart",
  "text": "我是中国人"
}

在这里插入图片描述

1.3 使用分词器(2)

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "我是中国人"
}

在这里插入图片描述


提示:能够看出不同的分词器,分词有明显的区别,所以以后定义一个索引不能再使用默认的 mapping 了,要手工建立 mapping, 因为要选择分词器

3、自定义词库

3.1 修改IKAnalyzer.cfg.xml

修改/usr/share/elasticsearch/plugins/ik/config/中的 IKAnalyzer.cfg.xml ,如果进行了目录挂载,只需要在外部对应目录修改就行,我这里的外部挂载目录是:/mydata/elasticsearch/plugins/ik/config

在这里插入图片描述

在这里插入图片描述

3.2 nginx的设置

首先你要安装了nginx,我这以下操作步骤是基于nginx挂载到外部目录。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

需要将这个链接地址放置到IKAnalyzer.cfg.xml中对应的远程词库目录
在这里插入图片描述

1.3 测试

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "汪汪队和猪猪对讨论乔碧罗"
}

在这里插入图片描述

5、后语

我这里最终的目的是项目中要使用到分词器的使用、不安装不行要执行的语句

我的代码执行结束后、报的是这个索引找不到。所以要创建、创建又需要用到分词器。

##创建一个gulimall_product新的索引
PUT gulimall_product
{
  "mappings": {
    "properties": {
      "attrs": {
        "type": "nested",
        "properties": {
          "attrId": {
            "type": "long"
          },
          "attrName": {
            "type": "keyword"
          },
          "attrValue": {
            "type": "keyword"
          }
        }
      },
      "brandId": {
        "type": "long"
      },
      "brandImg": {
        "type": "keyword"
      },
      "brandName": {
        "type": "keyword"
      },
      "catalogId": {
        "type": "long"
      },
      "catalogName": {
        "type": "keyword"
      },
      "hasStock": {
        "type": "boolean"
      },
      "hotScore": {
        "type": "long"
      },
      "saleCount": {
        "type": "long"
      },
      "skuId": {
        "type": "long"
      },
      "skuImg": {
        "type": "keyword"
      },
      "skuPrice": {
        "type": "keyword"
      },
      "skuTitle": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "spuId": {
        "type": "keyword"
      }
    }
  }
}
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
自然语言处理 API 索引
ElasticSearch自定义pinyin和ik分词库
ElasticSearch自定义pinyin和ik分词库
111 0
|
15天前
|
存储 自然语言处理 关系型数据库
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
聚合、补全、RabbitMQ消息同步、集群、脑裂问题、集群分布式存储、黑马旅游实现过滤和搜索补全功能
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
|
3月前
|
自然语言处理 搜索推荐
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
215 1
|
3月前
Elasticsearch自定义时间格式
Elasticsearch自定义时间格式
|
3月前
|
自然语言处理 数据可视化 Linux
ElasticSearch安装ik分词器_使用_自定义词典
ElasticSearch安装ik分词器_使用_自定义词典
43 1
|
3月前
|
数据安全/隐私保护 网络架构 索引
Elasticsearch索引数据的路由规则与自定义路由分发
Elasticsearch索引数据的路由规则与自定义路由分发
|
4月前
|
存储 数据建模 索引
来自钉钉群的问题——Elasticsearch 如何实现文件名自定义排序?
来自钉钉群的问题——Elasticsearch 如何实现文件名自定义排序?
45 0
|
4月前
|
自然语言处理
Elasticsearch+IK+pinyin自定义分词器
Elasticsearch+IK+pinyin自定义分词器
55 0
|
11月前
|
索引
Elasticsearch集群的索引清理及自定义清理
Elasticsearch集群的索引清理及自定义清理
137 1
|
JSON 数据格式 Python
基于elasticsearch的自定义业务告警的设计思路
基于elasticsearch的自定义业务告警的设计思路
189 0