Elasticsearch:Query rules 疑难解答

news2025/1/8 6:01:08

作者:来自 Elastic Kathleen_DeRusso

查询规则(Query rules)为用户提供了一种对特定查询进行细粒度控制的方法。目前,查询规则的功能允许你将你选择的搜索结果固定在结果集的顶部,和/或根据上下文查询数据从结果集中排除特定文档。

这种类型的查找调整控制有几种用例。其中包括将业务规则(例如促销活动)应用于你的搜索结果或 “修复” 高度可见的问题查询。

查询规则可以使用规则查询(rule query)访问,并且很快将作为与 RRF 等重新排名策略配合使用的检索器(retriever)提供!

这篇文章是关于如何知道你的查询规则是否按预期工作。

让我们从一个非常简单的示例开始,其中包含一个固定规则和一个排除规则:

PUT my-index/_doc/my-pinned-doc
{
  "title": "My pinned document"
}

PUT my-index/_doc/my-excluded-doc
{
  "title": "My excluded document"
}


PUT _query_rules/my-ruleset
{
  "rules": [
    {
      "rule_id": "my-pinned-rule",
      "type": "pinned",
      "criteria": [
        {
          "type": "exact",
          "metadata": "match",
          "values": [
            "pinned"
          ]
        }
      ],
      "actions": {
        "ids": [
          "my-pinned-doc"
        ]
      }
    },
    {
      "rule_id": "my-exclude-rule",
      "type": "exclude",
      "criteria": [
        {
          "type": "exact",
          "metadata": "match",
          "values": [
            "exclude"
          ]
        }
      ],
      "actions": {
        "ids": [
          "my-excluded-doc"
        ]
      }
    }
  ]
}

当查询规则启动时,我们仅支持 pinned 规则。此规则保证指定的文档出现在搜索结果的顶部,无论它们是否会在原始查询中返回。因此,验证规则是否应用的解决方法可能是发出 match_none 查询作为规则查询的 organic 部分,确保任何返回的文档都是由于规则匹配而固定的命中。

对于上述示例,这可能看起来像:

POST my-index/_search
{
  "query": {
    "rule": {
      "organic": {
        "match_none": {}
      },
      "ruleset_ids": [
        "my-ruleset"
      ],
      "match_criteria": {
        "match": "pinned"
      }
    }
  }
}

此后,我们添加了 exclude 规则,用于识别结果集中永远不应返回的文档。

同样,对于 exclude 规则,你可以针对 ids 查询运行规则查询,或者针对非常小的数据集运行 match_all 查询:

POST my-index/_search
{
  "query": {
    "rule": {
      "organic": {
        "ids": {
          "values": [
            "my-excluded-doc"
          ]
        }
      },
      "ruleset_ids": [
        "my-ruleset"
      ],
      "match_criteria": {
        "match": "exclude"
      }
    }
  }
}

这不是最好的解决方案,因此我们在 Elasticsearch 8.16 版中引入了一个新的查询规则测试器 API 调用(query rule tester API call),它允许你确定哪些规则符合特定条件,以及它们的应用顺序。以下是如何调用它的示例:

POST _query_rules/my-ruleset/_test
{
  "match_criteria": {
    "match": "exclude"
  }
}

该调用将返回以下响应:

{
  "total_matched_rules": 1,
  "matched_rules": [
    {
      "ruleset_id": "my-ruleset",
      "rule_id": "my-exclude-rule"
    }
  ]
}

这在未来也同样适用,即使添加了新的规则,这些规则不会从搜索结果中选择或排除文档。

祝你愉快地管理搜索结果!

原文:Dec 11th, 2024: [EN] Troubleshooting query rules - Advent Calendar - Discuss the Elastic Stack

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

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

相关文章

外驱功率管电流型PWM控制芯片CRE6281B1

CRE6281B1 是一款外驱功率管的高度集成的电流型PWM 控制 IC,为高性能、低待机功率、低成本、高效率的隔离型反激式开关电源控制器。在满载时,CRE6281B1工作在固定频率(65kHz)模式。在负载较低时,CRE6281B1采用节能模式,实现较高的…

mapbox基础,加载高德栅格底图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀加载高德栅格底图1. ☘️实现思路2. ☘…

【大数据】(选修)实验4 安装熟悉HBase数据库并实践

实验4 安装熟悉HBase数据库并实践 1、实验目的 (1)理解HBase在Hadoop体系结构中的角色; (2)熟练使用HBase操作常用的Shell命令; (3)熟悉HBase操作常用的Java API。 2、实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 HBase版本:1.1.2或以上版本 JDK版…

安装vue脚手架出现的一系列问题

安装vue脚手架出现的一系列问题 前言使用 npm 安装 vue/cli2.权限问题及解决方法一:可以使用管理员权限进行安装。方法二:更改npm全局安装路径 前言 由于已有较长时间未进行 vue 项目开发,今日着手准备开发一个新的 vue 项目时,在…

前端JS中var、let、const之间的区别

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 一、var 二、let 三、const 四、区别 变量…

STM32+ADC+DMA快速循环转换

测试平台:STM32F405RGT6 uint32_t AD_Buf[100]{0}; HAL_ADC_Start_DMA(&hadc2,(uint32_t *)AD_Buf,100); while(1) {printf("AD_Buf:%d\n",AD_Buf[0]); }

Unity中 Xlua使用整理(一)

1.安装: 从GitHub上下载Xlua源码 Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. (github.com) 下载Xlua压缩包,并解压将Aseet文件夹中的Xlua和Plugins文件夹复制到Unit…

js高阶-函数闭包this

闭包 一等公民 在js中函数是一等公民 函数使用很灵活,可以作为参数,也可以作为返回值 高阶函数 函数接收函数作为参数或者返回函数,则该函数称为高阶函数 eg: array.filter/reduce/find/findIndex/map.forEach 函数与方法 独立使用的 Function 做为对象的属性 method Wh…

Ubuntu 24.04.1 LTS nginx配置maccms

之前在Ubuntu 20.04中搭建过,现在换了新操作系统,顺便整理一下。 相关文章 《Ubuntu 20.04.1 LTS搭建nginx php7.4运行环境》 https://blog.csdn.net/lxyoucan/article/details/144850572《linux nginx maccms管理后台无法进入页面不存在和验证码不显…

【Ubuntu】想知道怎么通过命令行查看笔记本电池健康程度吗?

你想在 Ubuntu 中通过命令行检查电池健康状态,而不需要额外安装任何工具吗? 其实,你可以做到。 大多数在笔记本电脑上使用 Ubuntu 的用户都会通过顶部栏来监控电池电量(我总是在顶部栏启用电池百分比显示,以便一目了…

ue5动画重定向,一键重定向。ue4小白人替换成ue5

这就是我们下载的 初学者动画内容包 点击设置选中列 绿色的是动画 黄色的关卡 蓝色是蓝图 ctrla 全选 ctrl鼠标左键 选中所有动画 重定向动画资产 不要选错,只要绿色 选择目标网格体 选择所有的绿色 动画 导出动画 添加前缀ycn 导出 一定要提前新建好存放的…

05容器篇(D2_集合 - D6_容器源码分析篇 - D1_ArrayList)

目录 本章目标 一、基本介绍 二、原理分析 1. 数据结构源码分析 2. 默认容量&最大容量 为什么最大容量要-8呢? 3. 为什么ArrayList查询快,增删慢? 4. 初始化容量 1> 创建ArrayList对象分析:无参数 2> 创建Arra…

TVbox 手机、智能电视节目一网打尽

文章目录 一、简要介绍二、下载地址 一、简要介绍 TVbox是目前最火爆的多端、多源的电视影音工具,是一款开源的自定义添加站源的影音工具。TVBox,支持电视频道直播。一款TV端影视工具,软件本身不具有任何影视资源,但可以通过配置…

IP Anycast 与 CDN

基于名字寻址而不是基于地址寻址早就不是什么新鲜事,我们日常生活中的寻址基本都是找名字,比如找厕所,找连锁店,我们倾向于去具有同样称呼的最近那家。IP 网络中的这种机制叫 Anycast。 是不是一下子就不需要过多解释了。所有具有…

【0x006D】HCI_Write_LE_Host_Support命令详解

目录 一、命令概述 二、命令格式及参数说明 2.1. HCI_Write_LE_Host_Support命令格式 2.2. LE_Supported_Host 三、生成事件及参数 3.1. HCI_Command_Complete 事件 3.2. Status 四、命令执行流程 4.1. 命令发起阶段(主机端) 4.2. 命令处理阶段…

Harmony OS开发之ArkUI框架速成九弹性布局和层叠布局

> 程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前! --- 1.弹性布局(Flex) 弹性布局分为单行布局和多行…

HarmonyOS-面试资料

1. HarmonyOS-面试资料 1.1. HarmonyOS 优点、特点 1.1.1. 优点 (1)在国家方面,是国产的系统,受国家支持不会有限制的情况。   (2)设备互连18N(1:手机 8:平板、PC、vr设备、可穿戴设备、智慧…

macos安装java8

下载 dmg方式安装 安装 双击pkg运行 输入java -version验证 配置环境变量 cd ~ ls -a输入 ls -a后查看是否已经存在.bash_profile文件,如果已经存在就不需要创建,如果不存在,继续执行下方命令创建文件 touch .bash_profile /usr/l…

记一次k8s下容器启动失败,容器无日志问题排查

问题 背景 本地开发时&#xff0c;某应用增加logback-spring.xml配置文件&#xff0c;加入必要的依赖&#xff1a; <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…

KAFKA入门:原理架构解析

文章目录 一、认识kafka二、架构介绍2.1 工作流程2.2 Kafka可靠性保证2.3 Kafka存储 一、认识kafka Kafka到底是个啥&#xff1f;用来干嘛的&#xff1f; 官方定义如下&#xff1a; Kafka is used for building real-time data pipelines and streaming apps. It is horizont…