クエリルールセットの作成または更新

クエリルールセットを作成または更新します。

リクエスト

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 (オプション、文字列の配列) ピン留めするドキュメントの一意の ドキュメントIDids または docs のいずれか1つのみを指定でき、少なくとも1つは指定する必要があります。
  • docs (オプション、オブジェクトの配列) ピン留めするドキュメント。ids または docs のいずれか1つのみを指定でき、少なくとも1つは指定する必要があります。各ドキュメントに対して以下の属性を指定できます:
    • _index (必須、文字列) ピン留めするドキュメントのインデックス。
    • _id (必須、文字列) 一意の ドキュメントID

ピン留めされたクエリ の制限により、ids または docs を使用してドキュメントをピン留めすることしかできず、単一のルールで両方を使用することはできません。エラーを避けるために、クエリルールセットではどちらか一方を使用することをお勧めします。さらに、ピン留めされたクエリには最大100のピン留めされたヒットの制限があります。複数の一致するルールが100を超えるドキュメントをピン留めする場合、最初の100ドキュメントのみがルールセットで指定された順序でピン留めされます。

以下の例では、my-ruleset という新しいクエリルールセットを作成します。

my-ruleset に関連付けられた2つのルール:

  • my-rule1 は、user_querypugs または puggles を含むとき、id1 および id2 のIDを持つドキュメントをピン留めします かつ user_countryus に正確に一致します。
  • my-rule2 は、query_stringrescue dogs にあいまいに一致するとき、異なる指定されたインデックスから id3 および id4 のIDを持つドキュメントをピン留めします。

コンソール

  1. PUT _query_rules/my-ruleset
  2. {
  3. "rules": [
  4. {
  5. "rule_id": "my-rule1",
  6. "type": "pinned",
  7. "criteria": [
  8. {
  9. "type": "contains",
  10. "metadata": "user_query",
  11. "values": [ "pugs", "puggles" ]
  12. },
  13. {
  14. "type": "exact",
  15. "metadata": "user_country",
  16. "values": [ "us" ]
  17. }
  18. ],
  19. "actions": {
  20. "ids": [
  21. "id1",
  22. "id2"
  23. ]
  24. }
  25. },
  26. {
  27. "rule_id": "my-rule2",
  28. "type": "pinned",
  29. "criteria": [
  30. {
  31. "type": "fuzzy",
  32. "metadata": "user_query",
  33. "values": [ "rescue dogs" ]
  34. }
  35. ],
  36. "actions": {
  37. "docs": [
  38. {
  39. "_index": "index1",
  40. "_id": "id3"
  41. },
  42. {
  43. "_index": "index2",
  44. "_id": "id4"
  45. }
  46. ]
  47. }
  48. }
  49. ]
  50. }