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