クエリルールの作成または更新
クエリルールセット内の個々のクエリルールを作成または更新します。
リクエスト
PUT _query_rules/<ruleset_id>/_rule/<rule_id>
前提条件
manage_search_query_rules
権限が必要です。
(必須、オブジェクト) クエリルールのためのパラメータを含みます:
リクエストボディ
type
- (必須、文字列) ルールのタイプ。この時点では、
pinned
クエリルールタイプのみが許可されています。 criteria
- (必須、オブジェクトの配列) ルールが適用されるために満たす必要がある基準。ルールに対して複数の基準が指定されている場合、すべての基準を満たす必要があります。
基準には以下の情報が必要です:
type
(必須、文字列) 基準のタイプ。以下の基準タイプがサポートされています:exact
正確な一致のみがルールで定義された基準を満たします。文字列または数値に適用可能です。fuzzy
正確な一致または許可された レーベンシュタイン編集距離 内の一致がルールで定義された基準を満たします。文字列値にのみ適用可能です。prefix
この値で始まる一致がルールで定義された基準を満たします。文字列値にのみ適用可能です。suffix
この値で終わる一致がルールで定義された基準を満たします。文字列値にのみ適用可能です。contains
フィールド内のどこかにこの値を含む一致がルールで定義された基準を満たします。文字列値にのみ適用可能です。lt
この値より小さい値を持つ一致がルールで定義された基準を満たします。数値値にのみ適用可能です。lte
この値以下の値を持つ一致がルールで定義された基準を満たします。数値値にのみ適用可能です。gt
この値より大きい値を持つ一致がルールで定義された基準を満たします。数値値にのみ適用可能です。gte
この値以上の値を持つ一致がルールで定義された基準を満たします。数値値にのみ適用可能です。always
入力に関係なくすべてのクエリに一致します。
metadata
(オプション、文字列) 一致させるメタデータフィールド。このメタデータは、ルール で送信されたmatch_criteria
に対して一致させるために使用されます。always
以外のすべての基準タイプに必要です。values
(オプション、文字列の配列) メタデータフィールドに対して一致させる値。基準を満たすためには、少なくとも1つの値が一致する必要があります。always
以外のすべての基準タイプに必要です。actions
- (必須、オブジェクト) ルールが一致したときに実行するアクション。アクションの形式はルールタイプによって異なります。
アクションはルールタイプに依存します。pinned
ルールの場合、アクションは ピン留めされたクエリ で指定された形式に従います。以下のアクションが許可されています:
ids
(オプション、文字列の配列) ピン留めするドキュメントの一意の ドキュメントID。ids
またはdocs
のいずれか1つのみを指定でき、少なくとも1つは指定する必要があります。docs
(オプション、オブジェクトの配列) ピン留めするドキュメント。ids
またはdocs
のいずれか1つのみを指定でき、少なくとも1つは指定する必要があります。各ドキュメントに対して以下の属性を指定できます:_index
(必須、文字列) ピン留めするドキュメントのインデックス。_id
(必須、文字列) 一意の ドキュメントID。
ピン留めされたクエリ の制限により、ids
または docs
を使用してドキュメントをピン留めすることしかできず、単一のルールで両方を使用することはできません。エラーを避けるために、クエリルールセットではどちらか一方を使用することをお勧めします。さらに、ピン留めされたクエリには最大100のピン留めされたヒットの制限があります。複数の一致するルールが100を超えるドキュメントをピン留めする場合、最初の100ドキュメントのみがルールセットで指定された順序でピン留めされます。
例
以下の例は、my-ruleset
というクエリルールセット内にID my-rule1
の新しいクエリルールを作成します。
my-rule1
は、user_query
が pugs
または puggles
かつ user_country
が us
に正確に一致する場合、ID id1
と id2
のドキュメントをピン留めします。
Python
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)
Js
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"
]
}
}