上海企业网站,做私活的网站,做网站被骗3000,临沂最新消息作者#xff1a;来自 Elastic Kathleen_DeRusso
查询规则#xff08;Query rules#xff09;为用户提供了一种对特定查询进行细粒度控制的方法。目前#xff0c;查询规则的功能允许你将你选择的搜索结果固定在结果集的顶部#xff0c;和/或根据上下文查询数据从结果集中排…作者来自 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