当前位置: 首页 > news >正文

【Elasticsearch】keyword分析器

Elasticsearch 中的`keyword`分析器是一种非常特殊的分析器,它的行为与其他常见的分析器(如`standard`、`whitespace`等)截然不同。`keyword`分析器的核心功能是将整个输入字符串作为一个单一的标记(token)返回,而不会对其进行任何拆分或进一步处理。以下是对`keyword`分析器的详细描述,包括其工作原理、适用场景、配置方法以及与其他分析器的对比。

1.工作原理

`keyword`分析器是一个“无操作”(noop)分析器,它的工作原理非常简单:

• 输入:接收一个完整的字符串作为输入。

• 处理:不对输入字符串进行任何拆分或修改,直接将整个字符串作为一个单一的标记返回。

• 输出:返回一个包含整个输入字符串的标记列表,列表中只有一个标记。

例如,假设输入字符串为:

```

"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."

```

使用`keyword`分析器后,输出结果为:

```

[ "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone." ]

```

2.适用场景

由于`keyword`分析器不会对输入字符串进行拆分,因此它适用于以下几种场景:

2.1 精确匹配

当你需要对某个字段进行精确匹配时,`keyword`分析器非常有用。例如:

• 用户输入的完整短语:如果用户输入一个完整的短语(如搜索框中的内容),使用`keyword`分析器可以确保只有完全匹配该短语的文档才会被检索到。

• 代码片段:对于存储代码片段的字段,使用`keyword`分析器可以确保代码片段作为一个整体被索引和搜索。

• 文件名和路径:文件名和路径通常需要精确匹配,使用`keyword`分析器可以避免因分词而导致的不精确结果。

2.2 保持字符串完整性

某些字段需要保持原始输入的完整性,而不是被拆分为多个标记。例如:

• 标签(Tags):标签字段通常需要精确匹配,而不是被拆分为多个单词。

• 状态码(Status Codes):状态码字段通常是一个固定的字符串,需要保持原样。

• 用户输入的完整命令:用户输入的完整命令(如 SQL 查询)需要作为一个整体被索引和搜索。

2.3 自定义分析器的起点

虽然`keyword`分析器本身不可配置,但你可以基于它创建自定义分析器。通过添加标记过滤器(token filters),你可以进一步定制分析器的行为。例如:

• 大小写转换:在保持字符串完整性的同时,将所有字符转换为小写或大写。

• 去除特殊字符:在保持字符串完整性的同时,去除某些特殊字符。

3.配置方法

`keyword`分析器本身是不可配置的,但你可以通过创建自定义分析器来实现类似的功能,并添加额外的标记过滤器。

3.1 创建自定义分析器

以下是一个基于`keyword`分析器创建自定义分析器的示例:

```json

PUT /keyword_example

{

  "settings": {

    "analysis": {

      "analyzer": {

        "rebuilt_keyword": {

          "tokenizer": "keyword",

          "filter": []

        }

      }

    }

  }

}

```

 

 

在这个例子中,`rebuilt_keyword`是一个自定义分析器,它使用了`keyword`分词器(tokenizer),并且没有添加任何标记过滤器。你可以根据需要添加标记过滤器来进一步定制分析器的行为。

4.示例代码

以下是一些使用`keyword`分析器的示例代码,

POST _analyze
{
  "analyzer": "keyword",
  "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
 

5.对比其他分析器

为了更好地理解`keyword`分析器的作用,我们可以将其与其他常见的分析器进行对比:

5.1`standard`分析器

`standard`分析器会将输入字符串拆分为多个单词,并去除标点符号。例如:

• 输入:`"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."`

• 输出:`["the", "2", "quick", "brown", "foxes", "jumped", "over", "the", "lazy", "dog's", "bone"]`

5.2`whitespace`分析器

`whitespace`分析器会将输入字符串按空格拆分为多个单词,但不会去除标点符号。例如:

• 输入:`"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."`

• 输出:`["The", "2", "QUICK", "Brown-Foxes", "jumped", "over", "the", "lazy", "dog's", "bone."]`

5.3`keyword`分析器

`keyword`分析器不会对输入字符串进行任何拆分,而是将整个字符串作为一个单一的标记返回。例如:

• 输入:`"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."`

• 输出:`["The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."]`

6.总结

`keyword`分析器在 Elasticsearch 中的主要作用是保持字符串的完整性,确保输入的字符串作为一个单一的标记被索引和搜索。它适用于需要精确匹配的场景,以及那些不需要分词的字段。如果你需要对字段进行更复杂的处理,可以基于`keyword`分析器创建自定义分析器,并添加标记过滤器来进一步定制分析器的行为。

通过合理使用`keyword`分析器,你可以更好地满足不同字段的索引和搜索需求,提高数据处理的灵活性和准确性。

相关文章:

【Elasticsearch】keyword分析器

Elasticsearch 中的keyword分析器是一种非常特殊的分析器,它的行为与其他常见的分析器(如standard、whitespace等)截然不同。keyword分析器的核心功能是将整个输入字符串作为一个单一的标记(token)返回,而不…...

重生之我在异世界学编程之C语言:深入预处理篇(上)目录)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、预处理的作用与流程&#xf…...

MySQL数据库误删恢复_mysql 数据 误删

2、BigLog日志相关 2.1、检查biglog状态是否开启 声明: 当前为mysql版本5.7 当前为mysql版本5.7****当前为mysql版本5.7 2.1.1、Navicat工具执行 SHOW VARIABLES LIKE LOG_BIN%;OFF 是未开启状态,如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态} 2.…...

SpringAI集成DeepSeek实战

SpringAI集成DeepSeek实战教程 引言 Spring AI作为Spring生态系统中的新成员,为开发者提供了便捷的AI集成方案。本文将详细介绍如何在Spring项目中集成DeepSeek模型,实现智能对话等功能。 环境准备 在开始之前,请确保您的开发环境满足以下要…...

解决 THC/THC.h: No such file or directory 报错

报错现象: cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C In file included from /data/joyiot/liyong/codes/graspnet-baseline/knn/src/knn.h:5:0,from /data/joyiot/liyong/codes/graspnet-baseline/knn/s…...

S4D480 S4HANA 基于PDF的表单打印

2022年元旦的笔记草稿 SAP的表单打印从最早的SAPScripts 到后来的SMARTFORM,步入S4时代后由于Fiori的逐渐普及,更适应Web的Adobe Form成了SAP主流output文件格式。 目录 一、 基于PDF表单打印系统架构Interface 接口Form 表单ContextLayout 二、表单接…...

数组_移除元素

数组_移除元素 一、leetcode-27二、题解1.代码2.思考 一、leetcode-27 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数…...

Vue2/Vue3分别如何使用Watch

在 Vue 2 和 Vue 3 中,watch 用于监听数据的变化并执行相应的逻辑。虽然两者的核心功能相同,但在语法和使用方式上有一些区别。以下是 Vue 2 和 Vue 3 中使用 watch 的详细说明: Vue 2 中的 watch 在 Vue 2 中,watch 是通过选项式…...

C++从入门到实战(四)C++引用与inline,nullptr

C从入门到实战(四)C引用与inline,nullptr 前言一、C 引用(一)什么是引用(二)引用的特点(三)引用作为函数参数(四)引用作为函数返回值(…...

Linux库制作与原理:【静态库】【动态库】【目标文件】【ELF文件】【ELF从形成到假造轮廓】【理解链接和加载】

目录 一.什么是库 二.静态库 2.1创建静态库 我们在之前的路径下新建lib使用我们自己的库 2.2 使用makefile生成静态库 三.动态库 3.1动态库生成 3.2动态库使用 3.3库运行搜索路径 四.目标文件 五.ELF文件 六.ELF从形成到加载轮廓 6.1ELF形成可执行 6.2 ELF可执行文…...

项目BUG

项目BUG 前言 我创作这篇博客的目的是记录学习技术过程中的笔记。希望通过分享自己的学习经历,能够帮助到那些对相关领域感兴趣或者正在学习的人们。 项目BUG 1.低频率信号(100k或 200K以下)可以直接用一根导线焊接出几根导线来分几路,高频率信号只能…...

wordpress部署nginx版的

一、通过nginx部署wordpress 1、用yum源安装nginx yum install -y nginx 2、安装php相关软件 前提安装webtatic rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 通过yum源安装php相关软件 yum -y install php72w php72w-pdo php72w-mysqlnd php72w…...

【鸿蒙Next】优秀鸿蒙博客集锦

鸿蒙基础开发:多文件压缩上传及断点续传_鸿蒙 断点续传-CSDN博客...

【第2章:神经网络基础与实现——2.1 前馈神经网络的结构与工作原理】

老铁们好!今天我们要来一场长达两万字的超详细技术探险,我会像拆解乐高积木一样把前馈神经网络(Feedforward Neural Network)的每个零件摆在台面上,用最接地气的方式让你彻底搞懂这个深度学习基石的工作原理。准备好了吗?我们开始吧! 第一章:神经网络的 “乐高积木” 1…...

python-leetcode-阶乘后的零

172. 阶乘后的零 - 力扣(LeetCode) class Solution:def trailingZeroes(self, n: int) -> int:count 0while n > 5:n // 5count nreturn count...

Python:学生管理系统(继承性、多态性)。

输出样例如图: 题目内容: 利用继承、多态性等面向对象程序功能编写程序,实现学生管理系统,并包含以下内容: 第一,基类为学生类,并以此派生出本科生类、研究生类。 第二,本科生类包含…...

网络安全RSA加密

网络安全课相关知识: RSA预备知识 1.1 快速幂算法 顾名思义,快速幂就是快速算底数的$n$次幂。其时间复杂度为${\rm{O(log n)}}$,与朴素的$O\left( n \right)$相比,效率有了极大的提高。具体可以参考百度百科:快速幂。…...

Vue学习笔记4

Vue学习笔记 一、自定义创建项目 基于VueCli自定义创建项目架子 二、vuex基本认知 1、vuex概述 是什么:是vue的状态管理工具(插件),状态就是数据 大白话:vuex是一个插件,可以帮助我们管理vue通用的数…...

mariadb数据库的安装与部署

1、通过yum源安装mariadb数据库 yum -y install mariadb-server 2、启动mariadb数据库服务 systemctl start mariadb.service 3、配置mariadb数据库全局环境变量 systemctl enable mariadb.service 4、修改mariadb数据库默认密码,数据库默认密码为空 执行…...

单调队列与栈

一.题 1. 思路&#xff1a; 构建小压大的单调递减栈&#xff0c;对于每个栈的元素都进行处理并加到结果上 class Solution { public:int sumSubarrayMins(vector<int>& arr) {int stk[10000000],top 0;long long ans 0;for(int i 0;i<arr.size();i){while(top…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...