【愚公系列】2022年05月 .NET架构班 067-分布式中间件 Elasticsearch分词器

网友投稿 701 2022-05-29

一、elasticsearch-分词器

1.什么是分词器

分词器是Elasticsearch中很重要的一个组件,用来将一段文本分析成一个一个的词,Elasticsearch再根据这些词去做倒排索引。

2.ElasticSearch分词器类型

Elasticsearch 中内置了一些分词器,这些分词器只能对英文进行分词处理,无法将中文的词识别出来。所以ElasticSearch需要自定义中文分词器。

2.1 ElasticSearch之内置分词器

2.2 ElasticSearch之IK分词器

Elasticsearch中内置的分词器不能对中文进行分词,因此我们需要再安装一个能够支持中文的分词器,IK分词器就是个不错的选择。

IK分词器下载网址:https://github.com/medcl/elasticsearch-analysis-ik

注意:分词器版本必须和ES版本一致

二、.NET Core ElasticSearch分词器落地

1.创建项目

vs2022创建项目

2.下载Elasticsearch

-:https://www.elastic.co/downloads/elasticsearch

3.然后启动Elasticsearch

通过cmd执行命令

./elasticsearch.bat

默认地址:http://localhost:9200/

4、在项目中引入NEST

dotnet add package NEST

在项目中NEST连接Elasticsearch,通过NEST提供的API进行添加商品数据,然后在进行模糊查询。

三、ElasticSearch根据片段查询出文档

ElasticSearch根据片段查询出文档步骤如下:

1、先下载kibana。

Kibana是一个设计出来用于和Elasticsearch一起使用的开源的分析与可视化平台,可以用kibana 搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等展示高级数据分析与可视化,基于浏览器的接口使你能快速创建和分享实时展现Elasticsearch查询变化的动态仪表盘,让大量数据变得简单,容易理解

注意:安装kibana时,必须先安装elasticsearch且kibana的版本和elasticsearch的版本号必须一致

kibana下载网址:https://www.elastic.co/cn/downloads/kibana

2、然后配置kibana

kibana\config\kibana.yml配置文件,此处根据自己实际减压后的路径去找kibana.yml配置文件。

添加如下:

elasticsearch.hosts:["http://localhost:9200"] i18n.locale:"zh-CN"

3、然后进入bin目录直接cmd启动:

kibana.bat

4、打开kibana,直接进入开发者工具页面

5、 然后通过分析器分析文本

GET products/_analyze { "text": "愚公搬代码" }

即可得到被分词后的效果。默认使用是standard标准分析器实现

四、ElasticSearch Analyzer 分析器执行原理

ElasticSearch 分词时候主要做了如下三个事情:

【愚公系列】2022年05月 .NET架构班 067-分布式中间件 Elasticsearch分词器

字符过滤器 char_filter:过滤不必要的分词符号

分词器 tokenizer:实现分词规则

词单元过滤器 filter:实现自定义操作

五、ElasticSearch指定字段进行分词

1.先通过kibana查询Index商品表对应Mapping映射

GET products/_mapping

2.查看映射关系

发现string 都被默认转换成为了text文本。只有文本才能实现分词

ElasticSearch无法修改映射。需要重新创建索引。就是数据库

3.重新创建Index商品,然后指定映射。

PUT producs_0 { "mappings": { "properties": { "productTitle": { "type": "keyword" } } } }

4.迁移数据

POST _reindex { "source": { "index": "products" }, "dest": { "index": "products_0" } }

5.查询映射关系

GET products_0/_mapping

然后在客户端查询数据

六、ElasticSearch进行自定义分词

1.先创建商品数据库products_1

PUT mall_product_8 { "settings": { "analysis": { "analyzer": { "my_tony":{ "type": "custom", "char_filter": [ "html_strip"], "tokenizer": "standard", "filter":[ "lowercase"] } } }}, "mappings": { "properties": { "productTitle": { "type": "text", "analyzer": "my_tony" } } } }

2.然后在数据库products_1中进行测试

GET product_1/_analyze { "analyzer": "my_tony", "text": "p6架构班TTEST11wqaaa" }

然后进行数据读写

七.ElasticSearch进行自定义分词扩展

1、先进入到bin目录,然后安装elasticsearch-analysis-ik

elasticsearch-plugin.bat install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.1/elasticsearch-analysis-ik-7.10.1.zip

2、然后创建index数据库products_2

PUT products_2 { "mappings": { "properties": { "productTitle": { "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } } }

3、然后进行验证

GET mall_product_8/_analyze { "analyzer": "ik_max_word", "text": "p6架构班" }

.NET Elasticsearch 分布式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ElasticSearch入门 第一篇:Windows下安装ElasticSearch
下一篇:【CentOS后遗症】刚毕业的运维小姐姐 Linux用不了!你的也用不了了~
相关文章