创建或更新查询规则集
编辑创建或更新查询规则集编辑
此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览中的功能不受官方 GA 功能支持 SLA 的约束。
创建或更新查询规则集。
请求编辑
PUT _query_rules/<ruleset_id>
请求体编辑
-
rules
- (必需,对象数组) 此查询规则集中包含的特定规则。
每个规则集最多可以包含 100 条规则。可以使用 xpack.applications.rules.max_rules_per_ruleset
集群设置将此限制提高到 1000。
每个规则必须包含以下信息
-
rule_id
(必需,字符串) 此规则的唯一标识符。 -
type
(必需,字符串) 规则类型。目前只允许pinned
查询规则类型。 -
criteria
(必需,对象数组) 规则要应用必须满足的条件。如果为规则指定了多个条件,则所有条件都必须满足才能应用规则。 -
actions
(必需,对象) 规则匹配时要执行的操作。此操作的格式取决于规则类型。
条件必须包含以下信息
-
type
(必需,字符串) 条件类型。支持以下条件类型-
exact
只有完全匹配才能满足规则定义的条件。适用于字符串或数值。 -
fuzzy
完全匹配或在允许的 Levenshtein 编辑距离 内的匹配才能满足规则定义的条件。仅适用于字符串值。 -
prefix
以此值开头的匹配才能满足规则定义的条件。仅适用于字符串值。 -
suffix
以此值结尾的匹配才能满足规则定义的条件。仅适用于字符串值。 -
contains
在字段中任何位置包含此值的匹配才能满足规则定义的条件。仅适用于字符串值。 -
lt
值小于此值的匹配才能满足规则定义的条件。仅适用于数值。 -
lte
值小于或等于此值的匹配才能满足规则定义的条件。仅适用于数值。 -
gt
值大于此值的匹配才能满足规则定义的条件。仅适用于数值。 -
gte
值大于或等于此值的匹配才能满足规则定义的条件。仅适用于数值。 -
always
匹配所有查询,无论输入如何。
-
-
metadata
(可选,字符串) 要匹配的元数据字段。此元数据将用于匹配 规则 中发送的match_criteria
。除global
外,所有条件类型都需要此字段。 -
values
(可选,字符串数组) 要匹配元数据字段的值。只有一个值必须匹配才能满足条件。除global
外,所有条件类型都需要此字段。
操作取决于规则类型。对于 pinned
规则,操作遵循 固定查询 指定的格式。允许以下操作
由于 固定查询 中的限制,您只能使用 ids
或 docs
固定文档,但不能在单个规则中同时使用两者。建议在查询规则集中使用其中一个,以避免错误。此外,固定查询的固定命中数上限为 100。如果多个匹配规则固定了超过 100 个文档,则只会在规则集中指定的顺序中固定前 100 个文档。
示例编辑
以下示例创建了一个名为 my-ruleset
的新查询规则集。
两个规则与 my-ruleset
相关联
-
my-rule1
将在user_query
包含pugs
或puggles
并且user_country
完全匹配us
时固定 ID 为id1
和id2
的文档。 -
my-rule2
将在query_string
模糊匹配rescue dogs
时固定来自不同指定索引的 ID 为id3
和id4
的文档。
PUT _query_rules/my-ruleset { "rules": [ { "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" ] } }, { "rule_id": "my-rule2", "type": "pinned", "criteria": [ { "type": "fuzzy", "metadata": "user_query", "values": [ "rescue dogs" ] } ], "actions": { "docs": [ { "_index": "index1", "_id": "id3" }, { "_index": "index2", "_id": "id4" } ] } } ] }