【Elasticsearch系列廿二】特殊参数

news2024/11/24 4:18:18

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

      • 1.max_shards_per_node
      • 2.python api
      • 3.fuzziness
      • 4.\_score
      • 5.minimum_should_match
      • 6.embedding_dim

1.max_shards_per_node

在 Elasticsearch 中,max_shards_per_node是一个集群级别的设置,用于限制每个节点上可以打开的最大分片数。这个设置有助于防止单个节点上分片数量过多,从而可能导致性能问题或资源耗尽。默认情况下,Elasticsearch 集群的每个节点可以有 1000 个分片,但这个数字可以根据需要进行调整。

临时设置:

PUT /_cluster/settings
{
  "transient": {
    "cluster": {
      "max_shards_per_node": 10000
    }
  }
}

永久设置:


PUT /_cluster/settings
{
  "persistent": {
    "cluster": {
      "max_shards_per_node": 10000
    }
  }
}

2.python api

# 指定参数分页查询
from elasticsearch import Elasticsearch
es = Elasticsearch()
query = {
    "query": {
        "match_all": {}
    }
}
response = es.search(index="db01_v1_20240903", body=query, from_=0, size=10)

3.fuzziness

在 Elasticsearch 中,fuzziness 是一个用于模糊查询的参数,它允许在搜索时指定一个编辑距离,即允许用户输入与索引中的单词有一定差异的查询词,依然能够匹配到相应的文档。这个参数主要用于处理用户输入错误或拼写变体的情况。

fuzziness 可以设置为以下值:

  1. 数值:如 012,表示允许的最大编辑操作次数。数值越大,匹配的结果可能会越多,但同时查询性能可能会下降。
  2. AUTO:这是一个特殊的设置,它会根据查询词的长度自动调整编辑距离。通常,对于长度小于等于 2 的词,编辑距离设置为 0;长度在 3 到 5 之间的词,编辑距离设置为 1;长度大于 5 的词,编辑距离设置为 2。这个设置可以通过 AUTO:[low],[high] 的格式进行自定义,其中 lowhigh 分别表示词长范围的下限和上限。

例如,如果你想要在搜索时允许一个编辑错误,可以这样设置:

{
  "query": {
    "match": {
      "field": {
        "query": "search_term",
        "fuzziness": 1
      }
    }
  }
}

或者使用 AUTO

{
  "query": {
    "match": {
      "field": {
        "query": "search_term",
        "fuzziness": "AUTO"
      }
    }
  }
}

需要注意的是,模糊查询虽然可以提高用户体验,但可能会对性能产生影响,因为它需要额外的处理来生成和匹配可能的变体词。因此,在性能敏感的应用中应谨慎使用。

4._score

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 2.137549,
    "hits": [
      {
        "_index": "book",
        "_type": "_doc",
        "_id": "3",
        "_score": 2.137549,
        "_source": {
          "name": "spring开发基础",
          "description": "spring 在java领域非常流行,java程序员都在用。",
          "studymodel": "201001",
          "price": 88.6,
          "timestamp": "2019-08-24 19:11:35",
          "pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
          "tags": ["spring", "java"]
        }
      },
      {
        "_index": "book",
        "_type": "_doc",
        "_id": "2",
        "_score": 0.57961315,
        "_source": {
          "name": "java编程思想",
          "description": "java语言是世界第一编程语言,在软件开发领域使用人数最多。",
          "studymodel": "201001",
          "price": 68.6,
          "timestamp": "2019-08-25 19:11:35",
          "pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
          "tags": ["java", "dev"]
        }
      }
    ]
  }
}

结果分析:

  • 建立索引时, description 字段 term 倒排索引

    • java 2,3

    • 程序员 3

  • 搜索时,直接找 description 中含有 java 的文档 2,3,并且 3 号文档含有两个 java 字段,一个程序员,所以得分高,排在前面。2 号文档含有一个 java,排在后面。

5.minimum_should_match

minimum_should_match 是 Elasticsearch 中布尔查询(Boolean Query)的一个重要参数,它用来指定在执行查询时,should 子句至少应该匹配的子句数量或百分比。这个参数可以是具体的数字,也可以是百分比,或者它们的组合。

  1. 具体数字:如果 minimum_should_match 设置为一个整数,它表示至少需要匹配的 should 子句的数量。例如,如果有 4 个 should 子句,设置为 2 意味着文档必须至少满足其中的 2 个子句。

  2. 百分比:如果设置为百分比,它表示至少需要匹配的 should 子句的百分比。例如,如果有 6 个 should 子句,设置为 “50%” 意味着至少需要匹配 3 个子句(6 的 50%向下取整)。

  3. 组合使用:可以使用百分比和固定值的组合,如 “3<90%”,表示至少需要匹配 3 个子句或总数的 90%(以较大者为准)。

  4. 默认值:如果 bool 查询包含至少一个 should 子句,而没有 must 或 filter 子句,则 minimum_should_match 的默认值为 1。这意味着至少有一个 should 子句需要匹配。如果 bool 查询中包含 must 或 filter 子句,则 minimum_should_match 的默认值为 0,意味着 should 子句可以不满足任何条件。

  5. 特殊语法:可以使用特殊的语法来更精确地控制匹配条件,例如 “2<-25% 9<-3”,这表示如果有 1 或 2 个子句,则都需要匹配;如果有 3-9 个子句,则需要匹配除了 25%之外的所有子句;如果有 9 个以上的子句,则需要匹配除了三个之外的所有子句。

这个参数的使用可以根据查询的具体需求来调整,以达到最佳的查询结果和性能平衡。正确使用 minimum_should_match 可以提高查询的准确性和召回率,使得搜索结果更加符合用户的预期。

6.embedding_dim

在 Elasticsearch 中,embedding_dim是一个与向量搜索相关的参数,它指定了存储在dense_vector字段中的向量的维度。这个参数在创建索引时定义,并用于指定向量字段的维度大小。当索引设置为 true 时,embedding_dim的值不能超过 1024,当索引设置为 false 时,可以不超过 2048。这个值必须与后续写入的向量维度一致。

embedding_dim参数直接影响搜索结果,因为它决定了文档向量在向量空间中的表示。在进行向量搜索时,Elasticsearch 会使用这个参数来计算查询向量与文档向量之间的相似度。例如,使用余弦相似度或欧几里得距离等度量标准来找到与查询向量最相似的文档向量。如果embedding_dim设置不正确,可能会导致搜索结果的相关性降低,因为向量之间的比较可能不准确。

在实际应用中,embedding_dim的选择取决于所使用的机器学习模型生成的向量维度。例如,如果使用 BERT 模型生成的向量是 768 维的,那么在 Elasticsearch 中创建索引时,embedding_dim应该设置为 768,以确保文档向量可以正确存储和检索。

例如,如果你使用 BERT 模型、GloVe、Word2vec 或者 ChatGPT Embedding API 等将文本转换为向量,你需要在创建索引时指定dims参数,其值应与生成的向量维度相匹配。这样,Elasticsearch 就可以正确地存储和索引这些向量,以便进行高效的相似度搜索。

在实际应用中,embedding_dim参数的使用可以帮助实现语义搜索,通过比较查询向量和文档向量的相似度来检索文档,从而提供更加相关和准确的搜索结果。这种基于向量的搜索方法可以用于各种应用场景,如图像搜索、音乐推荐、文本分类等。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

解释器模式原理剖析和Spring中的应用

解释器模式原理剖析和Spring中的应用 解释器模式 是一种行为型设计模式&#xff0c;它定义了一种语言的文法表示&#xff0c;并提供了一个解释器来处理该文法的表达式。解释器模式可以用于构建语法解释器&#xff0c;例如计算器、简单编程语言的解释器等。 核心思想&#xff1a…

成功使用DDNS动态域名访问我的群晖NAS(TP-link路由器)

当NAS设备部署在动态IP环境中&#xff08;如家庭或小型办公室宽带&#xff09;&#xff0c;远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题&#xff0c;结合神卓互联NAS公网助手提供的DDNS&#xff08;动态域名服务&#xff09;功能&#xff0c;我们可以轻松实现通过…

蓝牙、WiFi、2.4G、Zigbee、LoRa、NB-IoT的区别与应用场景

在现代科技的推动下&#xff0c;无线通信技术已经成为我们生活中不可或缺的一部分。从智能家居到工业自动化&#xff0c;从远程监控到环境传感&#xff0c;每一种技术都有其独特的优势和应用场景。今天&#xff0c;我们将深入探讨六种主流的无线通信技术——蓝牙、WiFi、2.4G、…

基于vue框架的大参林药品信息管理系统的设计与实现8b4gt(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,药品分类,药品信息,医生 开题报告内容 基于Vue框架的大参林药品信息管理系统的设计与实现开题报告 一、引言 随着医疗健康行业的快速发展和信息化浪潮的推进&#xff0c;药品信息管理已成为提升医疗服务效率、保障患者用药安全、…

Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全

冲冲冲&#xff01;开干 这篇文章将分为九个篇章&#xff0c;带你逐步掌握工作流的核心知识。“破气式”&#xff0c;代表着工作流中的 无形之力&#xff0c;它是贯穿整个流程的 关键驱动 不知不觉已经到了独孤九剑最后一式了&#xff0c;我相信到这里之后各位都已经出神入化…

状态模式原理剖析

《状态模式原理剖析》 状态模式&#xff08;State Pattern&#xff09; 是一种行为设计模式&#xff0c;它允许对象在其内部状态改变时改变其行为。换句话说&#xff0c;当对象状态发生变化时&#xff0c;它的行为也会随之变化。 核心思想&#xff1a; 状态模式将对象的不同状…

爬虫逆向学习(七):补环境动态生成某数四代后缀MmEwMD

声明&#xff1a;本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 前言 这篇文章主要是研究如何动态生成后缀参数MmEwMD的&#xff0c;它是在文章爬虫逆向学习(六)&#xff1a;补环境过某数四代的基础上进行研究的&#xff0c;代码也是在它基础上增…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息

场景介绍 实况窗是一种帮助用户聚焦正在进行的任务&#xff0c;方便快速查看和即时处理的通知形态。有关实况窗简介、权限申请、开放场景、设计规范等说明&#xff0c;请参见Live View Kit简介。 通过Push Kit发送的实况窗消息支持三种操作类型&#xff0c;分别是&#xff1a…

【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!

正点原子《ESP32物联网项目实战》全新培训课程上线啦&#xff01;正点原子工程师手把手教你学&#xff01;彻底解决ARM32单片机项目入门难的问题&#xff01; 一、课程介绍 本课程专为ARM32单片机的入门学习者设计&#xff0c;涵盖了环境搭建、编程软件使用、模块基础驱动和多…

矩阵的逆怎么算?逆矩阵公式来了(附逆矩阵计算器)

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f4da; 在线性代数中&#xff0c;逆矩阵是一个非常重要的概念。一个方阵如果存在逆矩阵&#xff0c;意味着该矩阵是可逆的&#xff0c;或者说是非奇异的。逆矩阵在解决线性方程组、计算矩阵的方根等方面有着广泛的应…

利用Accelerate()进行pytorch的多GPU加速

简介 官方Github&#xff1a;https://github.com/huggingface/accelerate Accelerate 是为喜欢编写PyTorch模型的训练循环但不愿意编写和维护使用多GPU/TPU/fp16所需的样板代码的PyTorch用户创建的。 它可以仅加速与多 GPU/TPU/fp16 相关的样板代码&#xff0c;并保持其余代…

Pyspark dataframe基本内置方法(5)

文章目录 Pyspark sql DataFrame相关文章toDF 设置新列名toJSON row对象转换json字符串toLocallterator 获取迭代器toPandas 转换python dataframetransform dataframe转换union unionALL 并集不去重&#xff08;按列顺序&#xff09;unionByName 并集不去重&#xff08;按列名…

jenkins声明式流水线语法详解

最基本的语法包含 pipeline&#xff1a;所有有效的声明式流水线必须包含在一个 pipeline 块中stages&#xff1a;包含一系列一个或多个stage指令stage&#xff1a;stage包含在stages中进行&#xff0c;比如某个阶段steps&#xff1a;在阶段中具体得执行操作&#xff0c;一个或…

提升工作效率神器

这五款软件让你事半功倍 在当今快节奏的社会中&#xff0c;提高工作效率成为了每个人追求的目标。而在这个数字化时代&#xff0c;选择对的软件工具无疑是提高效率的关键。今天&#xff0c;我为大家推荐五款优秀的工作效率软件&#xff0c;帮助你在工作中事半功倍。 1、亿可达…

15个 Jenkins 面试题

Jenkins 已成为持续集成和持续部署 (CI/CD) 流程中使用最广泛的自动化服务器之一。凭借其强大的功能和广泛的插件生态系统&#xff0c;Jenkins 已成为全球软件开发团队的首选工具。如果您正在准备 Jenkins 面试&#xff0c;那么精通其概念、架构和最佳实践至关重要。 为了帮助…

1.3 MySql的用户管理

一、下载Mysql客户端 下载navicat:Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理 二、安装Navicat 三、创建数据库 创建一个数据库的连接吧&#xff0c;因为这个界面儿是图形界面儿&#xff0c;所以我们创建…

深入分析MySQL事务日志-Redo Log日志

文章目录 事务日志-Redo Log2.1 Redo Log2.1.1 Redo Log与持久性2.1.2 Redo Log的工作原理2.1.3 Redo Log的落盘策略2.1.4 Redo Log的系统参数 事务日志-Redo Log 事务的隔离性是通过锁实现&#xff0c;而事务的原子性、和持久性则是通过事务日志实现。在MySQL中&#xff0c;事…

【吉林大学编译原理题库】正则表达式的书写

1. 2. 选A 3. 没啥好说的&#xff0c;按意思写就行&#xff1a; 4. &#xfeff;5.设字母表S{0,1}&#xff0c;写正则表达式表示所有偶数个0和偶数个1组成的字符串。 6. 设字母表S{0,1}&#xff0c;写正则表达式表示所有偶数个0和奇数个1组成的字符串。&#xff08;提示&am…

Token usage of Content Filtered messages in Azure OpenAI Services

题意&#xff1a;在Azure OpenAI服务中&#xff0c;内容过滤消息的令牌使用 问题背景&#xff1a; When sending a message to a chat via GetChatCompletions as a response, I get a RequestFailedException. In the exception, I get an answer for which category content…

2-101基于matlab的频带方差端点检测

基于matlab的频带方差端点检测&#xff0c;噪声频谱中&#xff0c;各频带之间变化很平缓&#xff0c;语音各频带之间变化较激烈。据此特征&#xff0c;语音和噪声就极易区分。计算短时频带方差&#xff0c;实质就是计算某一帧信号的各频带能量之间的方差。这种以短时频带方差作…