ES学习笔记(七):文档分析

分词器

文档分析器所包含的步骤:

  1. 字符过滤器:整理字符串。eg:去掉HTML样式,&转变为and
  2. 分词器:将字符串分割成词条
  3. Token过滤器:对词条进行增、删、改

其中分词器又各有千秋

分词器大致包含:

以例句:Set the shape to semi-transparent by calling set_trans(5)

  • 标准分析器:默认。删除绝大部分标点。最后,将词条小写

结果:set, the, shape, to, semi, transparent, by, calling, set_trans, 5

  • 简单分析器:在任何不是字母的地方分隔文本,将词条小写

结果:set, the, shape, to, semi, transparent, by, calling, set, trans

  • 空格分析器:在空格地方划分文本

结果:Set, the, shape, to, semi-transparent, by, calling, set_trans(5)

  • 语言分析器:中文语言分词器(IK分词器)

IK分词器

IK分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.8.0

安装

直接将分词器的解压缩包,放到ES的plugin文件夹中。重启es,分词器即可加载成功。

⚠️注意:IK分词器的版本一定要与ES版本一致,否则ES无法启动

GEThttp://localhost:9200/_analyze{“text”:“测试单词”, “analyzer”:“ik_max_word”}

其中

  • ik_max_word:会将文本做最细粒度的拆分
  • ik_smart:会将文本做最粗粒度的拆分

对于固定词条, 不想让IK分词器进行分词的,可在插件中配置,步骤:

首先进入 ES 根目录中的 plugins 文件夹下的 ik 文件夹,进入 config 目录,创建 custom.dic (文件名任意)文件,写入“弗雷尔卓德”(词条)。同时打开 IKAnalyzer.cfg.xml 文件,将新建的 custom.dic 配置其中, 重启 ES 服务器。
在这里插入图片描述

并发处理

ES采用乐观锁的方式,应对并发修改。
老版本ES采用version字段,新版本ES使用if_seq_no 和 if_primary_term两个字段控制。
如果在新版本ES上使用version字段会报如下错误:

{
"error": {
       "root_cause": [
          {
             "type": "action_request_validation_exception",
"reason": "Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use `if_seq_no` and `if_primary_term` instead;"
} ],
       "type": "action_request_validation_exception",
       "reason": "Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use `if_seq_no` and `if_primary_term` instead;"
},
   "status": 400
}

ES的乐观锁对比时,是采用当前版本和修改版本一致时可修改成功;如果采用外部系统控制版本,则采用修改版本号大于当前版本的方式。

一般而言,数据存储会使用mysql等关系型数据库,ES被当作数据检索。在ES中如果已经存在可以当作版本号的字段,可采用以下方式,将其指定为外部系统使用的版本号。

方式请求路径
PUThttp://127.0.0.1:9200/my_index/_doc/1001?version=1&version_type=external
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值