Elasticsearch + Elasticsearch-Analyzer-ik 分词器

Elasticsearch + Elasticsearch-Analyzer-ik 分词器

https://cloud.tencent.com/developer/article/2590007

一、Elasticsearch安装

1、安装Java环境(必选)

Elasticsearch基于Java开发,需先安装Java 11或更高版本(推荐OpenJDK 11)。

  1. 更新apt包索引:
sudo apt update
  1. 安装OpenJDK 11:
sudo apt install openjdk-11-jdk -y
  1. 验证Java安装:
java -version

输出类似以下内容即成功:

2、添加Elasticsearch官方仓库

Ubuntu默认仓库不含ES,需手动添加官方仓库。

  1. 导入Elasticsearch的GPG签名密钥(验证包完整性):
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  1. 添加ES仓库到apt源(以8.x为例,其他版本替换8.x为对应版本号,如7.x):
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

3、安装Elasticsearch

  1. 更新apt包索引(加载新仓库):
sudo apt update
  1. 安装Elasticsearch:
sudo apt install elasticsearch=7.6.0
  1. 验证安装是否成功
dpkg -l | grep elasticsearch

4、配置Elasticsearch

ES的核心配置文件为/etc/elasticsearch/elasticsearch.yml,需根据需求修改(默认仅允许本地访问)。

  1. 编辑配置文件:
sudo vim /etc/elasticsearch/elasticsearch.yml
  1. 关键配置项(按需修改):

注意:ES 8.x默认启用安全功能(HTTPS、密码认证),新手测试可临时禁用(生产环境必须启用):
添加xpack.security.enabled: false(禁用密码和HTTPS)。

- **允许远程访问**(默认仅`localhost`,如需外部访问):  

network.host: 127.0.0.1改为network.host: 0.0.0.0(允许所有IP访问,生产环境建议指定具体IP)。
– 集群名称(默认elasticsearch,可自定义):
cluster.name: my-es-cluster
– 节点名称(默认随机,可自定义):
node.name: es-node-1
– 初始化主节点(单节点模式):
cluster.initial_master_nodes: ["es-node-1"]

  1. 保存退出(Ctrl+O→回车→Ctrl+X)。

5、启动Elasticsearch并设置开机自启

  1. 启动ES服务:

 

sudo systemctl start elasticsearch
  1. 设置开机自启:

 

sudo systemctl enable elasticsearch
  1. 检查服务状态(确保为active (running)):

 

sudo systemctl status elasticsearch

6、验证安装

ES默认监听9200端口,通过curl验证是否正常运行:

 

curl http://localhost:9200

成功输出示例(包含版本、集群信息):

7、(可选)开放防火墙端口

若需远程访问ES,需开放9200端口(以ufw防火墙为例):

 

sudo ufw allow 9200/tcp
sudo ufw reload

注意:如果使用云服务器需要到对用服务器控制面板中放行端口。

常见问题

  • 启动失败:检查Java版本是否兼容(ES 8.x需Java 11+),或配置文件语法错误(通过sudo journalctl -u elasticsearch查看日志)。
  • 远程无法访问:确认network.host配置为0.0.0.0,且防火墙已开放9200端口。
  • 安全验证错误:若未禁用安全功能,需用https访问(默认端口9200),并通过sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password生成密码。

至此,Elasticsearch已在Ubuntu上安装完成。

二、IK分词器安装

1、IK分词器介绍

IK分词器(IK Analyzer)是一款针对中文文本的分词工具,专为Elasticsearch(ES)设计,用于解决ES默认分词器对中文处理不佳的问题(默认分词器会将中文拆分为单个字符,无法识别词语)。

其核心特点包括:

  • 支持细粒度和粗粒度分词:细粒度(ik_max_word)会将文本拆分为尽可能多的词语,粗粒度(ik_smart)会做最粗粒度的拆分(适合快速检索)。
  • 自定义词典:支持用户添加行业术语、专有名词等自定义词语,避免被错误拆分。
  • 停用词过滤:可配置过滤无意义词汇(如“的”“了”等),优化索引效率。

2、Ubuntu环境下IK分词器安装步骤

IK分词器是ES的插件,安装前需确保:

  1. Elasticsearch已正常安装(参考之前的Ubuntu安装教程);
  2. IK分词器版本必须与ES版本完全一致(例如ES 7.6.0需对应IK 7.6.0)。

步骤1:确认Elasticsearch版本

首先查看已安装的ES版本,避免版本不兼容:

# 查看ES版本(需ES服务已启动)
curl http://localhost:9200 | grep "number"

输出类似 "number" : "7.6.0",记录版本号(如7.6.0)。

步骤2:下载并安装IK分词器

安装方式有两种,推荐在线安装(简单),若网络不佳可选择手动安装。#####方式1:在线安装(推荐)

通过ES自带的elasticsearch-plugin命令在线下载并安装,需替换命令中的{ES版本}为实际版本(如7.6.0):

# 切换到ES安装目录的bin文件夹(默认路径)
cd /usr/share/elasticsearch/bin

# 执行安装命令(需sudo权限,确保用户有权限操作)
sudo ./elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/{ES版本号}

例如,ES版本为7.6.0时:

sudo ./elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.6.0

安装过程中会提示“是否继续”,输入y回车即可。

#####

步骤3:重启Elasticsearch使插件生效

安装完成后,必须重启ES服务才能加载IK分词器:

sudo systemctl restart elasticsearch

# 检查ES状态(确保为active (running))
sudo systemctl status elasticsearch

步骤4:验证IK分词器是否安装成功

通过ES的分词API测试,发送请求验证是否能正常分词:

IK分词器包含两种模式:

  • ik_smart:最少切分
  • ik_max_word:最细切分

 

# 使用ik_max_word(细粒度)测试
curl -X POST "http://localhost:9200/_analyze" -H "Content-Type: application/json" -d '
{
  "analyzer": "ik_max_word",
  "text": "我爱北京天安门"
}'

若安装成功,会返回分词结果(拆分出“我”“爱”“北京”“天安门”等词语),类似:




{
	"tokens": [{
		"token": "我",
		"start_offset": 0,
		"end_offset": 1,
		"type": "CN_CHAR",
		"position": 0
	}, {
		"token": "爱",
		"start_offset": 1,
		"end_offset": 2,
		"type": "CN_CHAR",
		"position": 1
	}, {
		"token": "北京",
		"start_offset": 2,
		"end_offset": 4,
		"type": "CN_WORD",
		"position": 2
	}, {
		"token": "天安门",
		"start_offset": 4,
		"end_offset": 7,
		"type": "CN_WORD",
		"position": 3
	}, {
		"token": "天安",
		"start_offset": 4,
		"end_offset": 6,
		"type": "CN_WORD",
		"position": 4
	}, {
		"token": "门",
		"start_offset": 6,
		"end_offset": 7,
		"type": "CN_CHAR",
		"position": 5
	}]
}

步骤5:(可选)配置自定义词典

若需添加自定义词语(如行业术语),可修改IK的配置文件:

  1. 进入IK分词器的配置目录(默认路径):
cd /usr/share/elasticsearch/plugins/analysis-ik/config
  1. 新建自定义词典文件(如my_dict.dic):
sudo nano my_dict.dic

在文件中按行添加自定义词语(编码需为UTF-8,且无BOM头):

 

人工智能
机器学习
  1. 编辑IK的主配置文件IKAnalyzer.cfg.xml,引入自定义词典:

 

sudo nano IKAnalyzer.cfg.xml

<entry key="ext_dict"></entry>中添加自定义词典文件名:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
  <comment>IK Analyzer 扩展配置</comment>
  <!-- 自定义扩展词典 -->
  <entry key="ext_dict">my_dict.dic</entry>
  <!-- 自定义停用词词典(可选) -->
  <entry key="ext_stopwords"></entry>
</properties>

  1. 重启ES使自定义词典生效:

 

sudo systemctl restart elasticsearch

注意事项

  • 版本必须一致:IK分词器版本与ES版本不匹配会导致ES启动失败(可通过sudo journalctl -u elasticsearch查看错误日志)。
  • 权限问题:安装插件或修改配置文件时,需确保elasticsearch用户有读写权限(默认插件目录权限已适配,若手动操作需注意sudo使用)。
  • 网络问题:在线安装失败时,优先检查网络或改用手动安装。

通过以上步骤,即可在Ubuntu的Elasticsearch中成功使用IK分词器处理中文文本。

上一篇