Analysis 和 Analyzer
Analysis:文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词(Analyzer)。Analysis是通过Analyzer来实现的。分词就是将文档通过Analyzer分成一个一个的Term,每一个Term都指向包含这个Term的文档
Analyzer 组成
【注意】:在ES中默认使用标准分词器:StandardAnalyzer特点:中文单字分词/单词分词
我是中国人this is a good man---->analyzer—>我 是 中 国 人 this is a good man
character filters
,tokenizers
,token filters
【注意】
内置分词器
POST /_analyze
{
"analyzer": "standard",
"text": "我是中国人, this is a good Man"
}
POST /_analyze
{
"analyzer": "simple",
"text": "我是,中国人, this is a good Man"
}
POST /_analyze
{
"analyzer": "whitespace",
"text": "我是中国人, this is a good Man"
}
POST /_analyze
{
"analyzer": "keyword",
"text": "我是中国人, this is a good Man"
}
# 创建时,默认使用标准分词器 "analyzer": "standard"
PUT /analyzer
{
"settings": {},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "standard"
}
}
}
}
在ES中支持中文分词器非常多,如smartCN、IK等,这里推荐使用IK分词器
安装IK
github网站:https://github.com/medcl/elasticsearch-analysis-ik
【注意】
/usr/share/elasticsearch/plugins
# 1.下载对应版本到本地
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.0/elasticsearch-analysis-ik-7.14.0.zip
# 2.解压(建议本地下载之后,手动解压,再使用xftp将解压后的文件上传到linux)
unzip elasticsearch-analysis-ik-6.2.4.zip ik-7.14.0 (如果没有unzip命令,先使用"yum install -y unzip"进行安装)
# 3.移动到es安装目录的plugis目录中(不推荐使用,如果是手动解压,可以忽略此步骤往下看)
mv ik-7.14.0 elasticsearch-analysis-ik-6.2.4/plugins/
使用数据卷挂载的方式
# 1.先停止对应docker容器
docker-compose down
# 2.修改docker-compose.yml文件,如下图所示
# 将当前的路径下的ik-7.14.0文件映射到容器内部中的/usr/share/elasticsearch/plugins/ik-7.14.0文件,同时删除volumes下的plugin
############################################### 内容如下 ###############################################
version: "3.8"
volumes:
data:
config:
networks:
es:
services:
elasticsearch:
image: elasticsearch:7.14.0
ports:
- "9200:9200"
- "9300:9300"
networks:
- "es"
environment:
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- data:/usr/share/elasticsearch/data
- config:/usr/share/elasticsearch/config
- ./ik-7.14.0:/usr/share/elasticsearch/plugins/ik-7.14.0
kibana:
image: kibana:7.14.0
ports:
- "5601:5601"
networks:
- "es"
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
############################################### ###############################################
IK有两种颗粒度的拆分
ik_smart测试
POST /_analyze
{
"analyzer": "ik_smart",
"text": "中华人民共和国国歌"
}
ik_max_word测试
POST /_analyze
{
"analyzer": "ik_max_word",
"text": "中华人民共和国国歌"
}
下一篇文章《ElasticSearch - 扩展词、停用词配置》