ES-IK分词器的概念和基本使用

这篇具有很好参考价值的文章主要介绍了ES-IK分词器的概念和基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ES-IK分词器

1.1 初识ES-IK分词器

  ES IK分词器是一种基于中文文本的分词器,它是Elasticsearch中文分词的一种实现。它采用了自然语言处理技术,可以将中文文本进行切分,抽取出其中的词汇,从而提高搜索引擎对中文文本的搜索和检索效率。

  ES IK分词器的原理是采用了一种叫做“正向最大匹配”(Forward Maximum Matching,简称FMM)和“逆向最大匹配”(Backward Maximum Matching,简称BMM)的分词算法,通过对文本进行多次切分,最终确定最优的分词结果。

  ES IK分词器可以用于各种中文文本处理应用,包括搜索引擎、文本挖掘、信息检索等。它支持多种分词模式,包括最细粒度切分、智能切分和最大切分等模式,可以根据具体应用场景进行灵活配置。

1.2 IK分词器-拓展和停用

  1. 要拓展或停用ik分词器的词库,需要修改ik分词器目录中的config目录中的IkAnalzer.cfg.xml文件:
<?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">ext.dic</entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords">stopword.dic</entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
  1. 进行拓展词汇的时候需要创建出所定义的扩展字典文件,例如本文使用的是ext.dic,再往文件中填写词汇即可,每个词汇占一行,如下图:
    es ik分词,spring cloud和中间件,elasticsearch,java

  2. 进行停用词库的时候打开stopword.dic文件,再往文件中添加词汇即可,每个词汇占一行,如下图(一般停用的都是语气词、严禁品等):

es ik分词,spring cloud和中间件,elasticsearch,java

1.3 索引库

1.3.1 mapping属性

  在Elasticsearch中,mapping属性是指用于定义索引中文档的结构和属性的方式。它描述了索引中文档的字段名称、类型、分词器等元信息,这些元信息可以用于搜索、过滤和排序。

具体来说,mapping属性定义了索引中每个字段的以下信息:

  1. 字段类型(type):指定字段的数据类型,例如文本、数值、日期等。
  2. 分词器(analyzer):指定字段的分词器,用于对文本进行分词处理。
  3. 是否索引(index):指定字段是否需要被索引,如果需要,Elasticsearch将对该字段建立反向索引以支持全文检索,默认为true。
  4. 子字段(properties):该字段的子字段;

  除此之外,mapping属性还可以指定文档中的嵌套对象、数组(数组不是类型,只是可以传多个数据)等复杂类型,并对其进行相应的定义和配置。

1.3.2 索引库的CRUD

  1. 创建索引库和映射
基本语法:
  • 请求方式:PUT
  • 请求路径:/索引库名,可以自定义
  • 请求参数:mapping映射

格式:

PUT /索引库名称
{
  "mappings": {
    "properties": {
      "字段名":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "字段名2":{
        "type": "keyword",
        "index": "false"
      },
      "字段名3":{
        "properties": {
          "子字段": {
            "type": "keyword"
          }
        }
      },
      // ...略
    }
  }
}
  1. 查看索引库

基本语法

  • 请求方式:GET

  • 请求路径:/索引库名

  • 请求参数:无

格式

GET /索引库名
  1. 修改索引库

  倒排索引结构一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引。因此索引库一旦创建,无法修改mapping,但是可以添加新的字段到mapping中,也不会对倒排索引产生影响。

语法说明

PUT /索引库名/_mapping
{
  "properties": {
    "新字段名":{
      "type": "integer"
    }
  }
}
  1. 删除索引库

语法:

  • 请求方式:DELETE

  • 请求路径:/索引库名

  • 请求参数:无

格式:

DELETE /索引库名

1.3.3 文档的DSL

  1. 增加文档

语法:

POST /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    "字段3": {
        "子属性1": "值3",
        "子属性2": "值4"
    },
    // ...
}
  1. 删除文档

语法:

DELETE /{索引库名}/_doc/id值
  1. 修改文档

a. 全量修改:

全量修改是覆盖原来的文档,其本质是:

  • 根据指定的id删除文档
  • 新增一个相同id的文档

注意:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。

语法:

PUT /{索引库名}/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ... 略
}

b. 增量修改:

增量修改是只修改指定id匹配的文档中的部分字段。

语法:

POST /{索引库名}/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}
  1. 查询文档

语法:文章来源地址https://www.toymoban.com/news/detail-601467.html

GET /{索引库名称}/_doc/{id}

``

b. 增量修改:

增量修改是只修改指定id匹配的文档中的部分字段。

语法:

POST /{索引库名}/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}
  1. 查询文档

语法:

GET /{索引库名称}/_doc/{id}

到了这里,关于ES-IK分词器的概念和基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ELK04】ES 分词计算、IK分词器安装使用手册和热词动态更新

    本小结主要了解的内容是: 了解分词器的概念 掌握IK分词器和热词配置 ES中为了方便查询,提供多维度的查询功能,对存储在索引中的文档进行分词计算,但是文本内容不同,类型不同,语言不同分词计算逻辑就不会一样. 文本分析使Elasticsearch能够执行全文搜索,其中搜索返回所有

    2024年02月04日
    浏览(36)
  • es安装ik分词器

    IK分词器下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases 下载ES版本对应的分词器即可 安装ik分词器 将下载好的zip包解压,生成一个ik文件夹 将ik文件夹移动到ES安装目录下的 plugins 文件夹下(每台ES节点都要执行相同的操作) 重启ES集群 自定义分词库 用 vim 在ik中的

    2023年04月10日
    浏览(42)
  • es安装中文分词器 IK

    1.下载 https://github.com/medcl/elasticsearch-analysis-ik 这个是官方的下载地址,下载跟自己es版本对应的即可 那么需要下载 7.12.0版本的分词器 2.安装 1.在es的 plugins 的文件夹下先创建一个ik目录 bash cd /home/apps/elasticsearch/plugins/ mkdir ik 2.然后将下载解压后的文件放入到ik文件夹下 3.重启

    2024年02月21日
    浏览(43)
  • [ES]mac安装es、kibana、ik分词器

    1、创建一个网络,网络内的框架(es+kibana)互联 2、下载es和kibana 3、运行docker命令部署单点es+kibana(用来操作es) 说明 4、访问 5、查看日志 访问http://localhost:5601/ 点击这个,在里面写就行了 ​ 可选的有standard、english、chinese但是他们的中文都是一个字分一个词 下载这个 https:

    2024年02月11日
    浏览(38)
  • SpringBoot整合ES,ik分词器

    \\\"reason\\\": \\\"Failed to parse mapping: analyzer [ik_max_word] has not been configured in mappings\\\"  这是因为没有安装ES的IK分词器 下载地址 Release v8.7.0 · medcl/elasticsearch-analysis-ik · GitHub ElasticSearch 内置了分词器,如标准分词器、简单分词器、空白词器等。但这些分词器对我们最常使用的 中

    2024年02月08日
    浏览(38)
  • ES搜索框架--设置IK分词器

    ES的默认中文分词效果太差了,稍微长一点的词句就完全匹配不到,于是选择使用安装IK中文分词器来实现索引的分词。 参考: https://blog.csdn.net/w1014074794/article/details/119762827 https://www.bbsmax.com/A/6pdDqDaXzw/ 一、安装 官网教程: https://github.com/medcl/elasticsearch-analysis-ik,注意版本对

    2024年02月08日
    浏览(42)
  • ES(二)| 安装ES、Kibana、IK分词器、拼音分词器(自动补全)

    上一篇:ES(一)| ES简介、倒排索引、索引库操作语法、文档操作语法、Java使用RestClient进行ES操作 安装包下载: 链接:https://pan.baidu.com/s/1Y1O0B8aG7qzRLFFVYo9nHw 提取码:hdyc 因为我们还需要部署 kibana 容器,因此需要让 es 和 kibana 容器互联。这里先创建一个网络: 这里我采用

    2023年04月08日
    浏览(56)
  • ES分布式搜索-IK分词器

    es在创建倒排索引时需要对文档分词;在搜索时,需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。 我们在kibana的DevTools中测试: 语法说明: POST:请求方式 /_analyze:请求路径,这里省略了http://192.168.12.131:9200,有kibana帮我们补充 请求参数,json风格: anal

    2024年03月14日
    浏览(92)
  • Docker安装es以及ik分词器

    https://github.com/medcl/elasticsearch-analysis-ik/releases 若出现下图则成功 分词的作用和关系型数据库中的模糊查询相似,不同的是es可以为字段中的每个分词创建索引,通过空间换时间的方式大大提高了模糊查询的效率。而关系型数据库用like模糊查询时只有like xxx%的情况下会利用索引

    2024年02月14日
    浏览(41)
  • ElasticSearch的使用,安装ik分词器,自定义词库,SpringBoot整合ES(增、删、改、查)

    保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识(相当于,保存一个数据,保存在那个数据库中的哪个表中,指定主键ID) 例:PUT customer/external/1;在customer索引下的external类型下保存1号数据name为John Doe的数据 POST和PUT都可以新增数据 注意: POST 新增。如果

    2023年04月25日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包