规则查询

编辑

rule_query 在 8.15.0 中被重命名为 rule。 使用 rule_queryruleset_id 的旧语法已被弃用,并将在未来的版本中删除,因此强烈建议将现有的规则查询迁移到新的 API 结构。

规则查询不支持与重新排序一起使用。 如果想将查询规则与重新排序结合使用,请改用规则检索器

在返回结果之前,将查询规则应用于查询。 查询规则可用于以置顶查询的方式基于匹配定义的规则来提升文档,或识别要从上下文结果集中排除的特定文档。 如果未定义匹配的查询规则,则返回查询的“自然”匹配结果。 所有匹配的规则都按照它们在查询规则集中出现的顺序应用。 如果同一个文档同时匹配 exclude 规则和 pinned 规则,则该文档将被排除。

要使用规则查询,首先需要定义一组查询规则。 使用查询规则管理 APIs来创建和管理查询规则。 有关更多信息和示例,请参阅使用查询规则进行搜索

示例请求

编辑
resp = client.search(
    query={
        "rule": {
            "match_criteria": {
                "user_query": "pugs"
            },
            "ruleset_ids": [
                "my-ruleset"
            ],
            "organic": {
                "match": {
                    "description": "puggles"
                }
            }
        }
    },
)
print(resp)
const response = await client.search({
  query: {
    rule: {
      match_criteria: {
        user_query: "pugs",
      },
      ruleset_ids: ["my-ruleset"],
      organic: {
        match: {
          description: "puggles",
        },
      },
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "rule": {
      "match_criteria": {
        "user_query": "pugs"
      },
      "ruleset_ids": ["my-ruleset"],
      "organic": {
        "match": {
          "description": "puggles"
        }
      }
    }
  }
}

rule_query 的顶层参数

编辑
ruleset_ids
(必需,数组)一个或多个唯一查询规则集 ID 的数组,其中包含基于查询的规则,可按适用情况匹配和应用。 规则集及其关联的规则会按照它们在查询和规则集中指定的顺序进行评估。 可以指定的最大规则集数量为 10 个。
match_criteria
(必需,对象)定义应用于给定查询规则集中规则的匹配条件。 匹配条件应与规则的 criteria.metadata 字段中定义的键匹配。
organic
(必需,对象)任何用于返回结果的查询的选择,这些结果可能会被匹配的查询规则修改。 如果没有匹配并应用查询规则,则将执行此查询而无需修改。