ElasticSearch7.10-分词器

news2025/1/5 16:52:39

文章目录

  • 分词器
    • 1.字符过滤器
        • 1.介绍
        • 2.过滤html标签
        • 3.mappings过滤规则(屏蔽非文明用语)
        • 4.正则替换
    • 2.自定义分词器
        • 1.代码
        • 2.查询
    • 3.中文分词器
        • 1.下载ik分词器7.10.0版本(跟es对应)
        • 2.应用ik分词器
          • 1.进入插件目录下创建一个ik目录
          • 2.将下载的压缩包上传上去
          • 3.安装unzip并解压
            • 1.安装
            • 2.解压
            • 3.删除zip
            • 4.将这个ik目录分别复制给另外三台节点
          • 4.重启es
            • 1.首先查找到es,然后kill -9
            • 2.重新启动三个节点
            • 3.使用head插件查看状态
        • 3.测试ik分词器是否生效
          • 1.创建索引并应用ik分词器
          • 2.插入数据
          • 3.查看分词结果
        • 4.ik分词器的配置文件
  • 索引的批量操作
    • 1.基于mget的批量查询
        • 1.环境搭建
        • 2.根据id进行批量查询
        • 3.还可以在批量查询时指定自己想要的字段
    • 2.文档的四种操作类型
        • 1.介绍
        • 2._create 创建数据
        • 3.删除数据
        • 4._search 查询数据
        • 5._update 更新数据
    • 3._bulk
  • 模糊搜索和智能搜索推荐
    • 1.基本介绍
    • 2.前缀搜索
        • 1.基础数据
        • 2.代码
        • 3.原理
    • 3.通配符搜索
        • 1.基本介绍
        • 2.代码
    • 4.正则匹配
    • 5.模糊查询
        • 1.介绍
        • 2.代码
    • 6.短语前缀
        • 1.介绍
        • 2.代码
    • 7.edge_ngram

分词器

1.字符过滤器

1.介绍

CleanShot 2024-12-25 at 15.25.12@2x

2.过滤html标签

CleanShot 2024-12-25 at 15.35.48@2x

3.mappings过滤规则(屏蔽非文明用语)

CleanShot 2024-12-25 at 15.38.48@2x

4.正则替换

CleanShot 2024-12-25 at 15.41.34@2x

2.自定义分词器

1.代码
PUT /test_index
{
  "settings": {
    "analysis": { 
      "char_filter": { 
        "my_char_filter": { 
          "type": "html_strip" // 自定义字符过滤器,使用 html_strip 类型,剥离 HTML 标签
        }
      },
      "filter": { 
        "my_stopword": { 
          "type": "stop", // 自定义过滤器,移除停用词
          "stopwords": ["is", "a"] // 指定停用词列表,包括 "is" 和 "a"
        }
      }, 
      "tokenizer": { 
        "my_tokenizer": { 
          "type": "pattern", // 自定义分词器,基于正则表达式进行分词
          "pattern": "[,\\.?\\s]+" // 正则表达式,将逗号、句号、问号和空格作为分隔符
        }
      }, 
      "analyzer": { 
        "my_analysis": { 
          "type": "custom", // 自定义分析器类型
          "char_filter": ["my_char_filter"], // 使用自定义字符过滤器 "my_char_filter"
          "tokenizer": "my_tokenizer", // 使用自定义分词器 "my_tokenizer"
          "filter": ["my_stopword"] // 使用自定义停用词过滤器 "my_stopword"
        }
      }
    }
  }
}

2.查询
GET /test_index/_analyze
{
  "analyzer": "my_analysis",
  "text": "<p>This is a test, isn't it amazing?</p>"
}

CleanShot 2024-12-25 at 16.11.42@2x

3.中文分词器

1.下载ik分词器7.10.0版本(跟es对应)

https://release.infinilabs.com/analysis-ik/stable/

CleanShot 2024-12-25 at 16.15.58@2x

CleanShot 2024-12-25 at 16.17.09@2x

2.应用ik分词器
1.进入插件目录下创建一个ik目录
cd /usr/local/ElasticSearch/elasticsearch-7.10.0/plugins && mkdir ik
2.将下载的压缩包上传上去
cd ik

CleanShot 2024-12-25 at 16.26.59@2x

3.安装unzip并解压
1.安装
yum install unzip
2.解压
unzip elasticsearch-analysis-ik-7.10.0.zip
3.删除zip
rm -f elasticsearch-analysis-ik-7.10.0.zip
4.将这个ik目录分别复制给另外三台节点
cp -r /usr/local/ElasticSearch/elasticsearch-7.10.0/plugins/ik /usr/local/ElasticSearch/node2/plugins && cp -r /usr/local/ElasticSearch/elasticsearch-7.10.0/plugins/ik /usr/local/ElasticSearch/node3/plugins
4.重启es
1.首先查找到es,然后kill -9
ps -aux | grep elasticsearch
2.重新启动三个节点
su elasticsearch
cd /usr/local/ElasticSearch/elasticsearch-7.10.0/bin/ && ./elasticsearch -d && cd /usr/local/ElasticSearch/node2/bin/ && ./elasticsearch -d && cd /usr/local/ElasticSearch/node3/bin/ && ./elasticsearch -d
3.使用head插件查看状态

CleanShot 2024-12-25 at 16.33.49@2x

3.测试ik分词器是否生效
1.创建索引并应用ik分词器

CleanShot 2024-12-25 at 16.49.53@2x

PUT /test_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_smart"           
      },
      "description": {
        "type": "text",
        "analyzer": "ik_max_word"       
      }
    }
  }
}

2.插入数据
POST /test_index/_doc
{
  "title": "Elasticsearch 是一个分布式搜索引擎",
  "description": "IK 分词器支持中文分词,并且可以用于全文检索"
}

3.查看分词结果
POST /test_index/_analyze
{
  "field": "title",
  "text": "Elasticsearch 是一个分布式搜索引擎"
}

CleanShot 2024-12-25 at 16.52.00@2x

POST /test_index/_analyze
{
  "field": "description",
  "text": "IK 分词器支持中文分词,并且可以用于全文检索"
}

CleanShot 2024-12-25 at 16.52.42@2x

4.ik分词器的配置文件

CleanShot 2024-12-25 at 16.54.46@2x

索引的批量操作

1.基于mget的批量查询

1.环境搭建
PUT /new_index
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      }
    }
  }
}
POST /new_index/_doc/1
{
  "name": "Alice",
  "age": 25
}

POST /new_index/_doc/2
{
  "name": "Bob",
  "age": 30
}

POST /new_index/_doc/3
{
  "name": "Charlie",
  "age": 22
}
2.根据id进行批量查询
GET /new_index/_mget
{
  "ids": [1,2]
}

CleanShot 2024-12-26 at 13.49.22@2x

3.还可以在批量查询时指定自己想要的字段
GET /new_index/_mget
{
  "docs": [
    {
      "_id": 1,
      "_source": {
        "include": [
          "name"
        ]
      }
    },
    {
      "_id": 2,
      "_source": {
        "exclude": [
          "name"
        ]
      }
    }
  ]
}

CleanShot 2024-12-26 at 13.55.59@2x

2.文档的四种操作类型

1.介绍

CleanShot 2024-12-26 at 13.59.03@2x

2._create 创建数据

CleanShot 2024-12-26 at 14.06.27@2x

3.删除数据

CleanShot 2024-12-26 at 14.09.40@2x

4._search 查询数据

CleanShot 2024-12-26 at 14.11.46@2x

5._update 更新数据

CleanShot 2024-12-26 at 14.14.34@2x

3._bulk

CleanShot 2024-12-26 at 14.31.12@2x

模糊搜索和智能搜索推荐

1.基本介绍

CleanShot 2024-12-26 at 14.37.59@2x

2.前缀搜索

1.基础数据
#prefix: 前缀搜索
POST /my_index/_bulk?filter_path=items.*.error
{ "index": { "_id": "1" } }
{ "text": "城管打电话喊商贩去摆摊摊" }
{ "index": { "_id": "2" } }
{ "text": "笑果文化回应老农去摆摊" }
{ "index": { "_id": "3" } }
{ "text": "老农耗时17年种出椅子树" }
{ "index": { "_id": "4" } }
{ "text": "夫妻结婚30多年AA制,被城管抓" }
{ "index": { "_id": "5" } }
{ "text": "黑人见义勇为阻止抢劫反被铐住" }

2.代码
{
  "query": {
    "prefix": {
      "text": {
        "value": "笑"
      }
    }
  }
}
3.原理

前缀匹配是对倒排索引进行匹配的,而不是整个字段

3.通配符搜索

1.基本介绍

通配符也是匹配的倒排索引

2.代码

CleanShot 2024-12-26 at 14.56.55@2x

4.正则匹配

CleanShot 2024-12-27 at 11.08.52@2x

5.模糊查询

1.介绍

CleanShot 2024-12-27 at 13.09.32@2x

2.代码

注意:fuzzy是不分词的,match是分词的

CleanShot 2024-12-27 at 13.15.34@2x

6.短语前缀

1.介绍

CleanShot 2024-12-27 at 13.18.51@2x

2.代码

CleanShot 2024-12-27 at 13.33.06@2x

7.edge_ngram

PUT /my_index
{
  "settings": {
    "analysis": {
      "filter": {
        "my_edge_ngram": {
          "type": "edge_ngram",
          "min_gram": 2,
          "max_gram": 5
        }
      },
      "analyzer": {
        "my_ngram_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "my_edge_ngram"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "text": {
        "type": "text",
        "analyzer": "my_ngram_analyzer",
        "search_analyzer": "standard"
      }
    }
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之ARM(MX6U)裸机篇----6.BSP工程管理实验

一&#xff0c;BSP工程管理 定义&#xff1a;是为了模块化整理代码&#xff0c;相同属性的文件存放在同一个目录下。 ①先mkdir多个文件夹er ②把共同.h文件转移到指定文件夹下 二&#xff0c;启动文件 .global _start /* 全局标号 *//** 描述&#xff1a; _start函数&am…

【kubernetes组件合集】深入解析Kubernetes组件之三:client-go

深入解析Kubernetes组件之三&#xff1a;client-go 目录 深入解析Kubernetes组件之三&#xff1a;client-go 引言 1. client-go简介 2. client-go的功能 2.1 资源操作 2.2 资源监听 2.3 认证和授权 2.4 错误处理和重试 2.5 扩展性和定制化 3. 使用client-go与Kubern…

【门铃工作原理】2021-12-25

缘由关于#门铃工作原理#的问题&#xff0c;如何解决&#xff1f;-嵌入式-CSDN问答 4 RST&#xff08;复位&#xff09;当此引脚接高电平时定时器工作&#xff0c;当此引脚接地时芯片复位&#xff0c;输出低电平。 按钮按下给电容器充电并相当与短路了R1改变了频率&#xff0c;按…

html+css+js网页设计 美食 美食3个页面(带js)

htmlcssjs网页设计 美食 美食3个页面(带js) 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&…

jenkins修改端口以及开机自启

修改Jenkins端口 方式一&#xff1a;通过配置文件修改&#xff08;以CentOS为例&#xff09; 找到配置文件&#xff1a;在CentOS系统中&#xff0c;通常可以在/etc/sysconfig/jenkins文件中修改Jenkins的配置。如果没有这个文件&#xff0c;也可以查看/etc/default/jenkins&…

vue-table-<td colspan=“2“>不生效

代码是2:1:4:1:4五分布局,效果却是如下: 因为这里的表格没有指定表格布局算法 /*设置表格布局算法*/ 2 table{ 3 table-layout:fixed; 4 } 这里需要了解table-layout属性值、定义和用法、固定表格布局、自动表格布局。 1定义和用法 tableLayout属性用来显示表格单元格、…

Windows系统提示ffmpeg.dll丢失怎么解决?

一、了解ffmpeg.dll文件 ffmpeg.dll是FFmpeg项目的一个动态链接库文件&#xff0c;FFmpeg是一个开源的多媒体处理框架&#xff0c;能够解码、编码、转码、混流、过滤和播放几乎所有已知格式的音频和视频文件。当Windows系统提示ffmpeg.dll丢失时&#xff0c;通常意味着某个需要…

QT:控件属性及常用控件(1)------核心控件及属性

一个图形化界面上的内容&#xff0c;不需要我们直接从零去实现 QT中已经提供了很多的内置控件&#xff1a; 按钮&#xff0c;文本框&#xff0c;单选按钮&#xff0c;复选按钮&#xff0c;下拉框等等。。。。。 文章目录 1.常用控件属性1.1 enabled1.2 geometry1.2.1 geometry…

使用Diffusion Models进行图像超分辩重建

Diffusion Models专栏文章汇总:入门与实战 前言:图像超分辨率重建是一个经典CV任务,其实LR(低分辨率)和 HR(高分辨率)图像仅在高频细节上存在差异。通过添加适当的噪声,LR 图像将变得与其 HR 对应图像无法区分。这篇博客介绍一种方式巧妙利用这个规律使用Diffusion Mod…

药片(药丸)和胶囊识别数据集,使用yolo,pasical voc xml, coco json格式标注,可识别药片和胶囊两种标签,2445张原始图片

药片(药丸)和胶囊识别数据集&#xff0c;使用yolo&#xff0c;pasical voc xml, coco json格式标注&#xff0c;可识别药片和胶囊两种标签&#xff0c;2445张原始图片 数据集分割 训练组80&#xff05; 1967图片 有效集13% 317图片 测试集7% 161图片 预处…

【生活】冬天如何选口罩(医用口罩,N95, KN95还是KP95?带不带呼吸阀门?带不带活性炭?)

&#x1f4a1;总结一下就是&#xff1a; 日常防护的话&#xff0c;医用口罩就可以啦。要是想长时间佩戴N95&#xff08;KN95&#xff09;口罩的话也可以. 在高风险环境&#xff08;像医院、疫情防控期间&#xff09;&#xff0c;一定要选不带呼吸阀门的N95口罩KN95&#xff09…

贪心算法概述

贪心算法总是作出当前看来最好的选择&#xff0c;是局部最优 可以使用贪心算法的问题一般具有两个重要的性质 贪心选择性质最优子结构性质 贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择来达到 其与动态规划的问题区别在于&#xff0c;动态规划算法通…

SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!

目录 前言概述 SD安装1、安装软件2、启动3、配置4、运行5、测试 导入SD模型【决定画风】常用模型下载安装模型 SD卸载SD文生图提示词提示词使用技巧提示词的高级使用技巧强调关键词 前言 我向来不喜欢搞一些没有用的概念&#xff0c;所以直接整理可能用到的东西。 sd简单的说…

【LeetCode】2506、统计相似字符串对的数目

【LeetCode】2506、统计相似字符串对的数目 文章目录 一、哈希表位运算1.1 哈希表位运算 二、多语言解法 一、哈希表位运算 1.1 哈希表位运算 每个字符串, 可用一个 int 表示. (每个字符 是 int 的一个位) 哈希表记录各 字符组合 出现的次数 步骤: 遇到一个字符串, 得到 ma…

【GO基础学习】gin的使用

文章目录 模版使用流程参数传递路由分组数据解析和绑定gin中间件 模版使用流程 package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则&#xff0c;执行的函数// gin.Context&#x…

溯源取证-手机取证-简单篇

好久没有写了&#xff0c;水一篇简单的 案例摘要&#xff1a; 我们目前正在调查一起谋杀案&#xff0c;目前已经获得了受害者的手机作为关键证据。在与证人和受害者核心圈子相关人员进行面谈后&#xff0c;您的目标是分析我们收集的信息&#xff0c;并努力追踪证据&#xff0…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(四)

****非斜体正文为原文献内容&#xff08;也包含笔者的补充&#xff09;&#xff0c;灰色块中是对文章细节的进一步详细解释&#xff01; 四、提示范式&#xff08;Explanation for Prompting Paradigm&#xff09; 随着语言模型规模的扩大&#xff0c;基于提示&#xff08;prom…

基于TCP的Qt网络通信

基于TCP的Qt网络通信 项目源码&#xff1a;https://github.com/say-Hai/TcpSocketLearn/tree/QTcpSocket 在标准C没有提供专门用于套接字通信的类&#xff0c;所以只能使用操作系统提供的基于C的API函数&#xff0c;但是Qt就不一样了&#xff0c;它是C的一个框架并且里边提供了…

java vscode springboot 问题汇总

问题1 VSCODE配置SpringBoot&#xff0c;创建新项目运行时报错程序包不存在 找不到符号解决方法 选择Run Java即可 , 不是Run Code DemoApplication.java:3: 错误: 程序包org.springframework.boot不存在 import org.springframework.boot.SpringApplication; …

BLIP论文笔记

论文地址 BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 论文思想 其实Clip就相当于只用了ITC