创建或更新查询规则
编辑创建或更新查询规则
编辑在查询规则集中创建或更新一个单独的查询规则。
请求
编辑PUT _query_rules/<ruleset_id>/_rule/<rule_id>
请求体
编辑-
type
-
(必需,字符串) 规则的类型。目前允许以下查询规则类型
-
pinned
将识别并把特定文档固定到搜索结果的顶部。 -
exclude
将从搜索结果中排除特定文档。
-
-
criteria
- (必需,对象数组) 应用规则必须满足的条件。如果为一个规则指定了多个条件,则必须满足所有条件才能应用该规则。
条件必须具有以下信息
-
type
(必需,字符串) 条件的类型。支持以下条件类型-
exact
只有完全匹配才满足规则定义的条件。适用于字符串或数值。 -
fuzzy
完全匹配或在允许的 Levenshtein 编辑距离 内的匹配满足规则定义的条件。仅适用于字符串值。 -
prefix
以该值开头的匹配满足规则定义的条件。仅适用于字符串值。 -
suffix
以该值结尾的匹配满足规则定义的条件。仅适用于字符串值。 -
contains
字段中任何位置包含该值的匹配满足规则定义的条件。仅适用于字符串值。 -
lt
值小于该值的匹配满足规则定义的条件。仅适用于数值。 -
lte
值小于或等于该值的匹配满足规则定义的条件。仅适用于数值。 -
gt
值大于该值的匹配满足规则定义的条件。仅适用于数值。 -
gte
值大于或等于该值的匹配满足规则定义的条件。仅适用于数值。 -
always
匹配所有查询,无论输入如何。
-
-
metadata
(可选,字符串) 要匹配的元数据字段。此元数据将用于与 规则 中发送的match_criteria
进行匹配。除always
之外的所有条件类型都必需。 -
values
(可选,字符串数组) 要与元数据字段匹配的值。只需一个值匹配即可满足条件。除always
之外的所有条件类型都必需。-
actions
- (必需,对象) 匹配规则时要执行的操作。此操作的格式取决于规则类型。
-
操作取决于规则类型。 pinned
或 exclude
规则允许以下操作
由于 固定查询 中的限制,您只能使用 ids
或 docs
来固定文档,但不能在单个规则中同时使用两者。建议在查询规则集中使用其中一个,以避免错误。此外,固定查询的最大限制为 100 个固定匹配项。如果多个匹配规则固定了超过 100 个文档,则只固定规则集中指定的前 100 个文档。
示例
编辑以下示例在名为 my-ruleset
的查询规则集中创建一个新的查询规则,ID 为 my-rule1
。
-
当
user_query
包含pugs
*或*puggles
并且user_country
完全匹配us
时,my-rule1
将选择要提升的文档,其 ID 为id1
和id2
。
resp = client.query_rules.put_rule( ruleset_id="my-ruleset", rule_id="my-rule1", type="pinned", criteria=[ { "type": "contains", "metadata": "user_query", "values": [ "pugs", "puggles" ] }, { "type": "exact", "metadata": "user_country", "values": [ "us" ] } ], actions={ "ids": [ "id1", "id2" ] }, ) print(resp)
const response = await client.transport.request({ method: "PUT", path: "/_query_rules/my-ruleset/_rule/my-rule1", body: { type: "pinned", criteria: [ { type: "contains", metadata: "user_query", values: ["pugs", "puggles"], }, { type: "exact", metadata: "user_country", values: ["us"], }, ], actions: { ids: ["id1", "id2"], }, }, }); console.log(response);
PUT _query_rules/my-ruleset/_rule/my-rule1 { "type": "pinned", "criteria": [ { "type": "contains", "metadata": "user_query", "values": [ "pugs", "puggles" ] }, { "type": "exact", "metadata": "user_country", "values": [ "us" ] } ], "actions": { "ids": [ "id1", "id2" ] } }