【Elasticsearch】-文本分析

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 文本分析是搜索引擎中一个重要的环节,文本分析是将全文本转换为一系列单词的过程,也叫分词。analysis是通过analyzer分词器来实现的,可以使用Elasticsearch内置的分词器,也可以自己去制定一些分词器。除了在数据写入的时候将词条进行转换,在查询的时候也可以指定分词器对语句进行分析。

一、文本分析

analysis(只是一个概念),文本分析是将全文本转换为一系列单词的过程,也叫分词。analysis是通过analyzer分词器来实现的,可以使用Elasticsearch内置的分词器,也可以自己去制定一些分词器。除了在数据写入的时候将词条进行转换,在查询的时候也可以指定分词器对语句进行分析。

analyzer由三部分组成。例如有

Hello a world ,the world is beautiful

:

  1. Character Filter :将文本中的html标签剔除掉。
  2. Tokenizer:按照规则进行分词,在英文中按照空格分词
  3. Token Filter: 去掉stop world(停顿词,a,an,the,is,are等),然后转换为小写

 内置分词器

GET _analyze

{

 "analyzer": "standard",

 "text": "hello a  world"

}

(一)分词器的安装

1.1 IK分词器

1.1.1下载

下载地址 https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.11.2

1.1.2安装

下载后是个zip包,上传到/usr/local/elasticsearch-7.11.2/plugins目录

#解压文件到ik文件夹

unzip elasticsearch-analysis-ik-7.11.2.zip -d ik

#重新修改文件的拥有者

chown -R  es  elasticsearch-7.11.2

#重新启动es

./bin/elasticsearch -d -p pid

1.1.3分词方式

ik分词器提供了两种分词方式

分词器名称

说明

ik_smart

会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国”,“国歌”,适合phrase查询

ik_max_word

会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、人、共和国、共和、国歌”,会穷尽各种可能组合,适合Term Query

GET _analyze

{

 "analyzer": "ik_max_word",

 "text": "河南省郑州市"

}


1.1.4自定义词库

在很多时候,业务上的一些词库极有可能不再IK分词器的词库中,需要去定制属于我们自己的词库。特别是在一些行业领域,比如银行、金融、电力行业都有自己的特殊词库。比如下面的例子中,电能表、计量点点被切分为一个个的字,我们希望这两个词语不是被拆分;另外的作为中文的停顿词,也不希望出现在分词中,所以我们需要自定义词库和停顿词词库。

进入到$ES_HOME/plugins/ik/config目录下,创建custom目录,在目录下创建mydic.dic、ext_stopword.dic文件。

在文件中增加词条,如下图所示

修改IKAnalyzer.cfg.xml文件,把我们新增加的文件路径配置如下

查看配置过词条的结果,电能表和计量点不会再次被拆分

(二)分词器应用

2.1 新建索引

指定字段的被索引的分词器、查询时解析字段的分词器,并把自定义分词

PUT news

{"mappings": {

 "properties": {

   "title":{

     "type": "text",

     "analyzer": "ik_max_word",

     "search_analyzer": "ik_smart"

     },

     "content":{

       "type": "text",

       "analyzer": "ik_max_word",

       "search_analyzer": "ik_smart"

     }

   }

 }

}

2.2动态修改索引数据

数据如果被索引以后,再动态增加自定义词条,检索临时增加的动态词条不生效,需要删除数据重新索引数据或动态修改索引数据。当需要索引的数据量较小时可以采用第一种方式,当数据量很大时,采用动态索引方式较好。

POST news/_update_by_query

{

"query":{

 

 }

}

2.3动态增加自定义词条

动态增加自定义词条的原理是配置远程的扩展字典文件,修改远程的扩展字典文件达到动态增加自定义词条的目的。

我们借助nginx服务器,在nginx服务器上部署一个txt文档,文档部署成功后,在上述文件设置远程扩展地址URL

然后重启es服务,后续如果新增加自定义词条,可以修改此文件可以实现动态增加。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
5月前
|
自然语言处理 前端开发 UED
Elasticsearch文本分析深度解析
Elasticsearch文本分析深度解析
|
24天前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
85 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
3月前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
3月前
|
Ubuntu Oracle Java
如何在 Ubuntu VPS 上安装 Elasticsearch
如何在 Ubuntu VPS 上安装 Elasticsearch
35 0
|
3月前
|
存储 Ubuntu Oracle
在Ubuntu 14.04上安装和配置Elasticsearch的方法
在Ubuntu 14.04上安装和配置Elasticsearch的方法
41 0
|
3月前
|
存储 安全 Java
在CentOS 7上安装和配置Elasticsearch的方法
在CentOS 7上安装和配置Elasticsearch的方法
208 0
|
3月前
|
自然语言处理 Docker 容器
ElasticSearch 实现分词全文检索 - ES、Kibana、IK分词器安装
ElasticSearch 实现分词全文检索 - ES、Kibana、IK分词器安装
46 0
|
3月前
|
Linux Docker 容器
Docker 安装 Elasticsearch、Kibana
Docker 安装 Elasticsearch、Kibana
39 0

热门文章

最新文章