ElasticSearch7.10-分词器

文章目录

  • 分词器
    • 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"
      }
    }
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python利用selenium实现大麦网抢票

大麦网&#xff08;damai.cn&#xff09;是中国领先的现场娱乐票务平台&#xff0c;涵盖演唱会、音乐会、话剧、歌剧、体育赛事等多种门票销售。由于其平台上经常会有热门演出&#xff0c;抢票成为许多用户关注的焦点。然而&#xff0c;由于票务资源的有限性&#xff0c;以及大…

Linux 笔记 SELinux 常见操作与介绍

SELinux&#xff08;Security-Enhanced Linux&#xff09;是 Linux 操作系统中的一种安全模块&#xff0c;旨在提供更细粒度的访问控制。它最初由美国国家安全局&#xff08;NSA&#xff09;开发&#xff0c;目的是增强 Linux 系统的安全性。SELinux 通过强制访问控制&#xff…

Elasticsearch VS Easysearch 性能测试

压测环境 虚拟机配置 使用阿里云上规格&#xff1a;ecs.u1-c1m4.4xlarge&#xff0c;PL2: 单盘 IOPS 性能上限 10 万 (适用的云盘容量范围&#xff1a;461GiB - 64TiB) vCPU内存 (GiB)磁盘(GB)带宽&#xff08;Gbit/s&#xff09;数量1664500500024 Easysearch 配置 7 节点…

javacript中function (res) {}与箭头函数表达式(res) =>{}的区别

javacript中function (res) {}与(res) &#xff1e;{}的区别 function (res) {} 代码演示 let shape {name:长方形,say:function(){console.log(我是this.name)setTimeout(function(){console.log(3秒后输出我是: this.name); //this.name为undefined}, 3000)} }shape.sa…

[IT项目管理]十.项目人力资源管理

十&#xff0e;项目人力资源管理 *10.0基础知识 1&#xff09;动力与激励 10.1人力资源管理的重要性 很多项目经理都说过&#xff0c;“人是我们最重要的资产。”&#xff0c;人的因素决定着一个 组织或者项目的成败。 10.2人力资源管理对未来的其启示 对于组织来说&#…

数据结构理论篇(期末突击)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 学校课程突击 下面均是为了应付学校考试所用&#xff0c;如果有涉及部分知识点下面未说明&#xff0c;可以去我的数据结构专栏看看或者自行在…

Kafka的rebalance机制

1、什么是 rebalance 机制 重平衡&#xff08;rebalance&#xff09;机制规定了如何让消费者组下的所有消费者来分配 topic 中的每一个分区。 2、rebalance 机制的触发条件是什么 &#xff08;1&#xff09;消费者组内成员变更 成员增加&#xff1a;当有新的消费者加入到消费…

人工智能之基于阿里云图像人脸融合部署

人工智能之基于阿里云图像人脸融合部署 需求描述 基于阿里云搭建图像人脸融合模型&#xff0c;模型名称&#xff1a;iic/cv_unet-image-face-fusion_damo使用上述模型输出人脸融合照片 模型路径&#xff1a;人脸融合 业务实现 阿里云配置 阿里云配置如下&#xff1a; SD…

如何利用无线路由器实现水泵房远程监测管理

水泵站广泛部署应用在工农业用水、防洪、排涝和抗旱减灾等方面&#xff0c;如果水泵站发生异常&#xff0c;往往会对生产生活造成诸多损失&#xff0c;甚至引发安全事故。因此&#xff0c;建立一套高效、可靠的泵站远程监测管理系统至关重要。 方案背景 目前&#xff0c;我国大…

Unity Canvas中显示粒子特效

首先在场景中新建一个粒子特效 修改一下参数 1.改变粒子特效的渲染层级,层级修改为UI层,由UI相机渲染 使用粒子特效的Sorting Layer ID和Order In Layer,Sorting Layer ID设置为UI(如果没有UI层则新建就好了),对UI进行排序 对于要显示在前的UI组件添加Canvas组件,设置O…

Spring Cloud Security集成JWT 快速入门Demo

一、介绍 JWT (JSON Web Token) 是一种带有绑实和信息的简单标准化机制&#xff0c;在信息通信中用于验证和信息传递。尤其在应用中使用Spring Cloud实现分布式构建时&#xff0c;JWT可以作为一种无状态验证原理的证明。 本文将进一步描述如何在Spring Cloud Security中集成JW…

逻辑数据模型设计过程包含哪些任务?

逻辑数据模型设计是数据库开发周期中的一个关键环节&#xff0c;它位于需求分析之后、物理数据模型设计之前。这一步骤的主要目标是构建一个准确反映业务需求、结构清晰且易于理解的数据模型。本文将深入探讨逻辑数据模型设计过程所包含的各项任务&#xff0c;结合理论与实践&a…

CAT3D: Create Anything in 3D with Multi-View Diffusion Models 论文解读

24年5月的论文&#xff0c;上一版就是ReconFusion 目录 一、概述 二、相关工作 1、2D先验 2、相机条件下的2D先验 3、多视角先验 4、视频先验 5、前馈方法 三、Method 1、多视角扩散模型 2、新视角生成 3、3D重建 一、概述 该论文提出一种CAT3D方法&#xff0c;实现…

GitHub 及 GitHub Desktop 详细使用教程(通俗易懂)

目录 Δ前言 一、Github教程 1.什么是Github&#xff1f; 2.仓库和对仓库的操作&#xff1a; 2.1 Repository&#xff08;仓库&#xff09; 2.2 Fork&#xff08;派生&#xff09; 2.3 Star&#xff08;收藏&#xff09; 2.4 Watch&#xff08;追番&#xff09; 2.5 Issue&am…

Shell-概述、脚本、变量、数值运算

概述 一、什么是shell 在 Linux 内核与用户之间的解释器程序 通常指 /bin/bash负责向内核翻译及传达用户/程序指令相当于操作系统的“外壳” 二、shell的使用方式 交互式 —— 命令行 ---人工干预、智能化程度高 ---逐条解释执行、效率低 非交互式 —— 脚本 ---需要提前…

刷机TP TP-Link-WDR5660【持续更新】

上文中简单介绍了&#xff1a;路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度-CSDN博客 步骤如下&#xff1a; 第一步&#xff1a;安装Linux系统 本文使用virtualBox 安装Ubuntu的debian系统&#xff0c;本文不在讲述章 请自行参考&#xff1a;Kali 安装之腾讯云经…

信息科技伦理与道德1:研究方法

1 问题描述 1.1 讨论&#xff1f; 请挑一项信息技术&#xff0c;谈一谈为什么认为他是道德的/不道德的&#xff0c;或者根据使用场景才能判断是否道德。判断的依据是什么&#xff08;自身的道德准则&#xff09;&#xff1f;为什么你觉得你的道德准则是合理的&#xff0c;其他…

如何不修改模型参数来强化大语言模型 (LLM) 能力?

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 大语言模型 (Large Language Model, LLM, e.g. ChatGPT) 的参数量少则几十亿&#xff0c;多则上千亿&#xff0c;对其的训…

css实现垂直文本

效果 知识 writing-mode: <value>; 可选值 horizontal-tb: 默认值。文本从左到右&#xff08;或从右到左&#xff09;排列&#xff0c;然后从上到下。vertical-rl: 文本从上到下排列&#xff0c;然后从右到左。适用于垂直书写的方向&#xff0c;如日语和中文。vertica…

【C++/控制台】扫雷

源代码&#xff1a; #include <windows.h> #include <conio.h> #include <stdio.h> int S, W 9, H 9, B 10, s, p 0, c 1, i, *m, *M, (*f)(int, int), *O; int edge(int x, int y) { return x < 0 || W < x || y < 0 || H < y; } void tm…