ElasticSearch 中的中文分词器以及索引基本操作详解

6 篇文章 7 订阅
订阅专栏


本文是松哥所录视频教程的一个笔记,笔记简明扼要,完整内容小伙伴们可以参考视频,视频下载链接:https://pan.baidu.com/s/1NHoe0_52ut9fDUh0A6UQLA 提取码: kzv7

1.ElasticSearch 分词器介绍

1.1 内置分词器

ElasticSearch 核心功能就是数据检索,首先通过索引将文档写入 es。查询分析则主要分为两个步骤:

  1. 词条化:分词器将输入的文本转为一个一个的词条流。
  2. 过滤:比如停用词过滤器会从词条中去除不相干的词条(的,嗯,啊,呢);另外还有同义词过滤器、小写过滤器等。

ElasticSearch 中内置了多种分词器可以供使用。

内置分词器:

分词器作用
Standard Analyzer标准分词器,适用于英语等。
Simple Analyzer简单分词器,基于非字母字符进行分词,单词会被转为小写字母。
Whitespace Analyzer空格分词器。按照空格进行切分。
Stop Analyzer类似于简单分词器,但是增加了停用词的功能。
Keyword Analyzer关键词分词器,输入文本等于输出文本。
Pattern Analyzer利用正则表达式对文本进行切分,支持停用词。
Language Analyzer针对特定语言的分词器。
Fingerprint Analyzer指纹分析仪分词器,通过创建标记进行重复检测。

1.2 中文分词器

在 Es 中,使用较多的中文分词器是 elasticsearch-analysis-ik,这个是 es 的一个第三方插件,代码托管在 GitHub 上:

  • https://github.com/medcl/elasticsearch-analysis-ik
1.2.1 安装

两种使用方式:

第一种:

  1. 首先打开分词器官网:https://github.com/medcl/elasticsearch-analysis-ik。
  2. 在 https://github.com/medcl/elasticsearch-analysis-ik/releases 页面找到最新的正式版,下载下来。我们这里的下载链接是 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip。
  3. 将下载文件解压。
  4. 在 es/plugins 目录下,新建 ik 目录,并将解压后的所有文件拷贝到 ik 目录下。
  5. 重启 es 服务。

第二种:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip
1.2.2 测试

es 重启成功后,首先创建一个名为 test 的索引:

接下来,在该索引中进行分词测试:

1.2.3 自定义扩展词库
1.2.3.1 本地自定义

在 es/plugins/ik/config 目录下,新建 ext.dic 文件(文件名任意),在该文件中可以配置自定义的词库。

如果有多个词,换行写入新词即可。

然后在 es/plugins/ik/config/IKAnalyzer.cfg.xml 中配置扩展词典的位置:

1.2.3.2 远程词库

也可以配置远程词库,远程词库支持热更新(不用重启 es 就可以生效)。

热更新只需要提供一个接口,接口返回扩展词即可。

具体使用方式如下,新建一个 Spring Boot 项目,引入 Web 依赖即可。然后在 resources/stastic 目录下新建 ext.dic 文件,写入扩展词:

接下来,在 es/plugins/ik/config/IKAnalyzer.cfg.xml 文件中配置远程扩展词接口:

配置完成后,重启 es ,即可生效。

热更新,主要是响应头的 Last-Modified 或者 ETag 字段发生变化,ik 就会自动重新加载远程扩展辞典。

视频笔记,在公众号江南一点雨后台回复 elasticsearch04 获取下载链接。

2. ElasticSearch 索引管理

微信公众号江南一点雨后台回复 elasticsearch05 下载本笔记。

启动一个 master 节点和两个 slave 节点进行测试(参考第二集的视频搭建)。

2.1 新建索引

2.1.1 通过 head 插件新建索引

在 head 插件中,选择 索引选项卡,然后点击新建索引。新建索引时,需要填入索引名称、分片数以及副本数。

索引创建成功后,如下图:

0、1、2、3、4 分别表示索引的分片,粗框表示主分片,细框表示副本(点一下框,通过 primary 属性可以查看是主分片还是副本)。.kibana 索引只有一个分片和一个副本,所以只有 0。

2.1.2 通过请求创建

可以通过 postman 发送请求,也可以通过 kibana 发送请求,由于 kibana 有提示,所以这里采用 kibana。

创建索引请求:

PUT book

创建成功后,可以查看索引信息:

需要注意两点:

  • 索引名称不能有大写字母

  • 索引名是唯一的,不能重复,重复创建会出错

2.2 更新索引

索引创建好之后,可以修改其属性。

例如修改索引的副本数:

PUT book/_settings
{
  "number_of_replicas": 2
}

修改成功后,如下:

更新分片数也是一样。

2.3 修改索引的读写权限

索引创建成功后,可以向索引中写入文档:

PUT book/_doc/1
{
  "title":"三国演义"
}

写入成功后,可以在 head 插件中查看:

默认情况下,索引是具备读写权限的,当然这个读写权限可以关闭。

例如,关闭索引的写权限:

PUT book/_settings
{
  "blocks.write": true
}

关闭之后,就无法添加文档了。关闭了写权限之后,如果想要再次打开,方式如下:

PUT book/_settings
{
  "blocks.write": false
}

其他类似的权限有:

  • blocks.write
  • blocks.read
  • blocks.read_only

2.4 查看索引

head 插件查看方式如下:

请求查看方式如下:

GET book/_settings

也可以同时查看多个索引信息:

GET book,test/_settings

也可以查看所有索引信息:

GET _all/_settings

2.5 删除索引

head 插件可以删除索引:

请求删除如下:

DELETE test

删除一个不存在的索引会报错。

5.6 索引打开/关闭

关闭索引:

POST book/_close

打开索引:

POST book/_open

当然,可以同时关闭/打开多个索引,多个索引用 , 隔开,或者直接使用 _all 代表所有索引。

2.7 复制索引

索引复制,只会复制数据,不会复制索引配置。

POST _reindex
{
  "source": {"index":"book"},
  "dest": {"index":"book_new"}
}

复制的时候,可以添加查询条件。

2.8 索引别名

可以为索引创建别名,如果这个别名是唯一的,该别名可以代替索引名称。

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}

添加结果如下:

将 add 改为 remove 就表示移除别名:

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}

查看某一个索引的别名:

GET /book/_alias

查看某一个别名对应的索引(book_alias 表示一个别名):

GET /book_alias/_alias

可以查看集群上所有可用别名:

GET /_alias

最后,松哥还搜集了 50+ 个项目需求文档,想做个项目练练手的小伙伴不妨看看哦~



需求文档地址: https://github.com/lenve/javadoc

elasticsearch整合分词、创建索引、搜索例子
10-23
lasticsearch整合分词、创建索引、搜索例子,elasticsearch版本为1.0,索引数据从数据表动态读取生成,有关键字高亮效果,查询分页 1 在dababase目录导致相关的数据库文件,修改DBCOperation java文件数据库连接地址,修改elasticsearch.properties文件相关链接 2 运行CreatIndexMysql文件,里面有main方法查询数据库生成相关的索引文件 3 部署工程在tomcat访问即可看到效果,项目有很多的工具类,比如类似百度的关键字Suggest提示,拼音搜索等。可以在此项目基础上去扩展这些功能 备注:elasticsearch-rtf集成版下载地址 https://github.com/medcl/elasticsearch-rtf] 详情参考:http://git.oschina.net/kangjie1209/elasticsearch1.0
ElasticSearch分词使用及索引操作
天天发梦的梦想哥
11-19 2006
一、分词 ES内置默认分词 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-njsIzbN3-1605747836722)(en-resource://database/579:1)] ElasticSearch 核心功能就是数据检索,首先通过索引将文档写入 es。查询分析则主要分为两个步骤: 词条化:分词将输入的文本转为一个一个的词条流。 过滤:比如停用词过滤会从词条去除不相干的词条(的,嗯,啊,呢);另外还有同义词过滤、小写过滤等。 ES中文分词 安装
Elasticsearch分词技术全面解析
最新发布
专注于数据库技术分享,包含但不限于Oracle,MySQL,PostgreSQL,ElasticSearch及国产数据库等
04-20 769
是将文本字符串拆分成独立的词汇或术语的过程。在 Elasticsearch 分词通常发生在索引文档时,确保搜索时能够匹配到正确的词汇片段。分词的目标是生成有意义的、可比较的 tokens,同时兼顾搜索效率和查询语义理解。Elasticsearch 允许为索引每个字段指定不同的分析,以适应各种文本类型和搜索需求。这可以通过在索引映射(mapping)设置。是分词工作的核心,它包含了一个完整的文本分析流程。响应将包含分词后的 tokens 列表,帮助验证分析配置是否符合预期。
Elasticsearch (1) - 索引库 文档 分词
u013085496的博客
05-07 722
Elasticsearch (1) - 索引库 文档 分词 创建索引ES索引库是一个逻辑概念,它包括了分词列表及文档列表,同一个索引存储了相同类型的文档。它就相当于MySQL的表,或相当于Mongodb的集合。 关于索引这个语: 索引(名词):ES是基于Lucene构建的一个搜索服务,它要从索引库搜索符合条件索引数据。 ...
ElasticSearch50:索引管理_快速上机动手实战修改分词以及定制自己的分词
一枚程序员的博客
01-08 1564
1.默认分词 standard standard tokenizer:以单词的边界进行切分 standard token filter:什么都不做 lowercase token filter:将所有字母转换成小写 stop token filter(默认被禁用),移除停用词,比如a the it等等 2.修改分词的设置 例子:启用standard的基于english的
Haystack 使用 Elasticsearch 建立索引时 修改为中文分词
SevenBerry的博客
07-15 1201
Haystack 使用 Elasticsearch 建立索引时 更改为中文分词
elasticsearch-ik中文分词7.6.2.zip
04-11
用于elasticsearch7.6.2配套的中文分词,欢迎大家使用 下面是它的描述,用于elasticsearch7.6.2配套的中文分词
windows版本ES7.17.3中文分词elasticsearch-analysis-ik-7.17.3 .zip
02-05
用于elasticsearch7.17.3这个版本的ik中文分词,考虑到官网有时网络不稳定下载不下来,这里特意上传,方便大家使用; 目录结构如下: config -- 文件夹 plugin-security.policy plugin-descriptor.properties ...
elasticsearch-7.0.0 版本 ik 中文分词
08-20
elasticsearch-7.0.0版本 ik中文分词,编译好的文件,亲测成功,2.4.6版本的见在本人其他资源寻找,免费下载,成功请给好评。
ElasticSearch + IK中文分词 + kibana.zip(6.2.4版本)
10-29
ElasticSearch + IK中文分词 + kibana.zip(6.2.4版本),SpringBoot 整合 Elasticsearch、IK分词 实现全文检索所需软件包,文章说明:https://blog.csdn.net/qq_38762237/article/details/89552017
Elasticsearch安装IK分词
01-07
Elasticsearch默认分词文的支持不好,会分隔成一个一个的汉字。而IK分词文的支持比较好一些,主要有两种模式“ik_smart”和“ik_max_word”。 Elasticsearch文拆分测试: curl -H Content-Type...
安装es 全文 分词索引
八点二十四分
02-15 347
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.2/elasticsearch-analysis-ik-6.2.2.zip
ElasticSearch系列——创建、 修改以及删除索引分词以及定制自己的分词
weixin_42894555的博客
07-12 2100
文章目录索引创建索引修改索引删除索引默认分词修改分词的设置定制化自己的分词 ElasticSearch系列——主目录 索引 创建索引 创建索引的语法 PUT /my_index { "settings": { ... any settings ... }, "mappings": { "type_one": { ... any mappings ... }, "type_two": { ... any mappings ... }, .
elasticSearch 倒排索引索引修改流程,实时搜索,分词,文档冲突
JavaBoot1992的博客
05-20 188
倒排索引 以前是id对应数据 1001 hello Myworld 倒排是 hello 1001 world 1001 分词主要对hello Myworld做分词 还要看hello Myworld得数据类型,如果是keyword就无法分词就是 hello Myworld 1001 分词得话主要是ik_max_word最细粒度区分和ik_smart区分 词条:索引最小存储和查询单元 词典:字典,词条的集合,B+tree,hashMap 倒排表:单词在倒排列表的存储位置
es索引762(分词
u013421039的博客
07-16 296
ElasticSearch(六):IK分词的安装与使用IK分词创建索引 Elasticsearch中文分词插件es-ik(博主推荐) 如何在Elasticsearch安装中文分词(IK+pinyin) 这里写目录标题一、分词elasticsearch-analysis-ik1. 分词类型一、分词的作用1.1 分词的作用三、创建索引3.1 创建指定分词索引 之前我们创建索引,查询数据,都是使用的默认分词分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索
Elasticsearch之重建索引
悟能的师兄的专栏
08-01 7909
0、引言 看着这个标题就好吓人,这个重建索引是建立在Lucene实现的倒排索引的原则上的,而我们的每一个查询又都是建立在倒排索引上面的,因此稳定的链条产生了: mapping --》写入数据--》数据根据分词生成倒排索引--》索引待查询 1、重建索引 当我们有了了解:mapping 数据存储后,倒排索引就生成了这个概念之后,那么我们很清晰了这样一个图: 实际解释成如下图: 2、重建索...
Elasticsearch06:Elasticsearch分词详解ES分词介绍、倒排索引介绍、分词的作用、停用词
weixin_40612128的博客
03-16 5406
一、ES分词介绍 ES在添加数据,也就是创建索引的时候,会先对数据进行分词。 在查询索引数据的时候,也会先根据查询的关键字进行分词。 所以在ES分词这个过程是非常重要的,涉及到查询的效率和准确度。 假设有一条数据,数据有一个字段是titile,这个字段的值为LexCorp BFG-9000。 我们想要把这条数据在ES创建索引,方便后期检索。 创建索引和查询索引的大致流程是这样的: 图左侧是创建索引的过程: 首先对数据进行空白字符分割,将LexCorp BFG-9000切分为LexCorp和BFG
ElasticSearch 索引查询使用指南——详细版
weixin_30892889的博客
09-01 5137
   我们通常用用_cat API检测集群是否健康。 确保9200端口号可用:   curl 'localhost:9200/_cat/health?v'   绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用.  ...
ElasticSearch安装中文分词IK
05-19
要在Elasticsearch安装中文分词IK,请按照以下步骤操作: 1.确保您的Elasticsearch版本与IK分词版本兼容。您可以在IK分词的GitHub页面上查看兼容性信息。 2.下载IK分词插件。您可以在IK分词的GitHub页面上找到最新版本的插件。 3.将IK分词插件安装到Elasticsearch。您可以使用以下命令将插件安装到Elasticsearch: ``` sudo bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v{版本号}/elasticsearch-analysis-ik-{版本号}.zip ``` 请将{版本号}替换为您要安装的IK分词的版本号。例如,如果您要安装版本7.5.1的IK分词,则应使用以下命令: ``` sudo bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.1/elasticsearch-analysis-ik-7.5.1.zip ``` 4.安装完成后,重启Elasticsearch以使IK分词生效: ``` sudo systemctl restart elasticsearch ``` 5.现在您可以在Elasticsearch索引使用中文分词IK了。您可以使用以下代码段在索引映射配置IK分词: ``` "analysis": { "analyzer": { "ik_max_word": { "tokenizer": "ik_max_word" }, "ik_smart": { "tokenizer": "ik_smart" } }, "tokenizer": { "ik_max_word": { "type": "ik_max_word" }, "ik_smart": { "type": "ik_smart" } } } ``` 在这个示例,我们为两个分词ik_max_word和ik_smart定义了令牌。您可以根据需要添加其他分词和令牌

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • MVCC 水略深,但是弄懂了真的好爽 769910
  • 初识Spring Boot框架 512570
  • Spring RestTemplate中几种常见的请求方式 253479
  • 在Spring Boot中使用Spring Security实现权限控制 190133
  • 使用Spring Boot开发Web项目 167218

分类专栏

  • 关于Spring Boot 303篇
  • Git教程 10篇
  • idea 1篇
  • Spring和SpringMVC框架案例 9篇
  • android基础 53篇
  • 自定义View 9篇
  • 玩转ubuntu 20篇
  • 关于MyBatis 10篇
  • android源码解读 12篇
  • Android5.0 9篇
  • NDK实战 9篇
  • MongoDB教程 20篇
  • Spring Cloud系列 32篇
  • java 170篇
  • 玩转android 152篇
  • javascript 7篇
  • jquery 6篇
  • jquery mobile 4篇
  • 浏览器 2篇
  • chrome 1篇
  • c/c++ 2篇
  • jni 2篇
  • 管中窥豹 219篇
  • json 2篇
  • 新技术 2篇
  • webservice 11篇
  • git 11篇
  • oracle 16篇
  • 数据库 19篇
  • mysql 8篇
  • linux 19篇
  • ubuntu 19篇
  • android5.0 10篇
  • 开源控件
  • JavaEE 92篇
  • elasticsearch 6篇
  • redis 10篇
  • docker 2篇

最新评论

  • 一文搞懂 Spring 循环依赖

    CSDN-Ada助手: 不知道 Java 技能树是否可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java

  • 手把手教你搭建 RabbitMQ 集群

    yangguosheng: 请问,我再node2中操作将node2加入node1节点rabbitmqctl join_cluster rabbit@node1。然后node2上看集群状态,显示集群名称还是rabbitmq@node2。这是为什么呢?

  • RabbitMQ 中的 VirtualHost 该如何理解

    qq_1944637830: 有点namespace的味道

  • IDEA 中如何完成 Git 版本回退?

    金簪雪里埋~: 1.1中的撤销工作区中的修改还可以使用命令 git restore git01.txt 来撤销对git01.txt的修改 1.2中的撤销暂存区中的修改可以使用命令 git restore --staged git01.txt 此时git01.txt文件又回到了添加到暂存区之前的状态。同理,如果想回到git01.txt文件最初还没修改的状态,执行git restore git01.txt就可以了。

  • 在 Java 代码中来一段 JavaScript?聊聊 Flowable 中的脚本任务

    娇妻~王成超~如梦: 如果是代码中直接画流程图怎么执行脚本

大家在看

  • (算法)找到字符串中所有字母异位词——<滑动窗⼝+哈希表>
  • Java面向对象:初识继承 215
  • 【实用软件】Adobe Acrobat DC 2024最新版安装教程 75
  • 怎么把三列数据相同的号码一起求和? 166
  • 多叉树的DFS深度优先遍历,回溯法的基础算法之一 50

最新文章

  • 管理员如何踢掉登录用户?
  • Spring Security 如何防止点击劫持
  • 又一个小伙伴在深圳上车安家~
2024年15篇
2023年63篇
2022年96篇
2021年56篇
2020年95篇
2019年172篇
2018年70篇
2017年77篇
2016年70篇
2015年173篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司益阳百搜标王报价固原推广网站报价唐山SEO按天收费价格白城品牌网站设计哪家好塔城百搜标王哪家好商洛建网站推荐中山网站关键词优化公司宿迁英文网站建设公司郴州网站优化排名推荐云浮网站优化排名吴忠百姓网标王哪家好镇江品牌网站设计多少钱青岛关键词按天收费推荐邵阳SEO按天扣费多少钱临汾优化价格甘孜网站建设多少钱丹竹头推广网站价格泰安网站优化按天扣费哪家好百色关键词按天收费报价黄石英文网站建设达州百度标王哪家好盐田网站推广方案大运百姓网标王推荐盐田网站优化推广价格淮南百度标王价格阳泉网站优化推广公司塔城网站建设设计莱芜seo优化多少钱怀化设计公司网站泰安网站优化软件价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化