Oracle Cloud Infrastructureドキュメント

検索言語構文

このトピックでは、独自の問合せを作成できるように、構文とルールの説明を含む検索の問合せ言語の基本について説明します。 問合せは検索条件を特定のリソース・タイプに適用し、結果を並べ替えることができます。 サポートされているすべてのリソース・タイプとリソース属性を検索し、検索結果を順序付ける必要がない場合は、問合せを作成する必要はありません。 かわりに、検索に問合せ言語構文を適用せずに、フリー・フォーム・テキストの一部または完全一致を検索できます。

問合せを実行する準備ができたら、「リソースの問合せ」を参照してください。

問合せの基本

次の例は、問合せの基本的な構文を示しています:

query <resourceType> resources where <conditions> sorted by <fieldName> <order>

または

query <resourceType> resources matching <keywords>

検索は、空白、インデント、および改行を無視します。 サンプル問合せには、読みやすくするためのインデントが含まれています。 構文のみを説明するために、山カッコ(<>)とイタリック体のテキストは、1つ以上のキーワードで構成できる変数を示します。

問合せでは、句には次のものが含まれます:

  • query - (必須)後続の句に基づいて返すリソースを選択します。 問合せ文は常にqueryという単語で始まります。
  • where - リソースを指定されたconditionsに一致させます。
  • matching - テキストが完全に一致するか、リソース・タイプに一致するか、または索引付きリソース属性に表示されるかに関係なく、リソースを指定のテキストと照合します。
  • sorted by - orderで指定された順序でfieldNameに従ってリソースをオーダーします。 この句を指定しない場合、検索は結果を、作成日順に降順にリストします。最新のリソースが最初にリストされます。

別途指示がない限り、句はオプションです。 照合のために、where句とmatching句を個別にまたは一緒に使用できます。

query句では、次の情報を指定します:

  • resourceType - (必須)問合せの実行時に後続の句が適用されるリソース・タイプを指定します。 リソース・タイプ名(たとえば、databaseまたはgroup)またはallのいずれかを指定できます。 allを指定すると、検索はすべてのリソース・タイプに対してconditionsを検索します。 個々のリソース・タイプを問合せできますが、ファミリ・タイプは問合せできません。 サポートされているリソース・タイプのリストについては、「検索の概要」「サポートされるリソース」セクションを参照してください。
  • resources - (必須)これがリソース問合せであることを指定します。

条件

where句は、conditionsを適用し、検索によって返される結果を制限するフィルタとして機能します。 1つ以上の条件文を指定できます。 複数の条件の詳細については、「グループ化条件」を参照してください。

問合せでは、conditionsは次の要素で構成されます:

<fieldName> <operation> <value>

fieldNameキーワードは、その属性のoperationと目的のvalueが評価されるリソース属性です。 各フィールドはフィールド・タイプに関連付けられています。 conditionsフィルタで使用できるoperationのタイプは、フィールドのタイプによって異なります。 APIドキュメントには、属性、フィールドの種類、および制限を指定する、サポートされている各リソース・タイプの参照が含まれています。 詳細については、「リソース問合せの概要」「サポートされるリソース」セクションを参照してください。

問合せconditionsでは、operationは、ステートメント内のvalueに適用される比較演算子です。 valueキーワードは、指定したfieldNameの値を参照します。 検索は、操作に従って、目的のリソース・タイプの指定された属性が目的のvalueと一致するかどうかを評価します。 一重引用符()を一括して開閉するには値を囲む必要があります。

次の表は、リソース問合せでサポートされる操作を示しています:

操作 説明 サポートされているフィールド型 Case-sensitive?

=

文字列の一致または完全一致

String, integer, rational, Boolean, date-time

いいえ

valueがˈ backUp ˈであった場合、これは"backup"、"BACKUP"、"BackUp"、"backUp"、または大文字小文字の他のバリエーションにも一致します。

!=

次と等しくない

String, integer, rational, Boolean, date-time

いいえ

valueがˈ backUp ˈであった場合、"backUp"、"backup"、またはその他の大文字小文字のバリエーションと一致します。 文字'backup'を含まないその順序にも一致します。

==

厳密には等しい

文字列

はい

valuebackUpがの場合は、backUpとだけ一致し、そのほかの変則は一致しません。

!==

厳密には等しくない

文字列

はい

valueがˈ backUp ˈであった場合、これは"backup"、"BACKup"、または"backUp"以外の場合と大文字小文字も正確に一致します。

>=

以上

Integer, rational, date-time

該当なし

size >= 5が条件として設定されている問合せの場合、すべての結果の値は5、またはsizeというフィールドにあります。

>

より大きい

Integer, rational, date-time

該当なし

条件としてsize > 5がある問合せの場合、すべての結果はsizeというフィールドに5より大きい値になります。

<=

以下

Integer, rational, date-time

該当なし

条件としてsize <= 5を持つ問合せの場合、すべての結果は、sizeという名前のフィールドの値として5以下になります。

<

より小さい

Integer, rational, date-time

該当なし

条件としてsize < 5を持つ問合せの場合、すべての結果は、sizeという名前のフィールドの値として5以下になります。

日時値

次のパターン文字列書式のいずれかを使用することで、日付と時間の値を指定できます:

書式 コメント

<yyyy>-<MM>-<dd> <HH>:<mm>:<ss> <TimeZone>

'2018-06-19 16:15:41 PDT', '2018-06-19 16:15:41 -08:00'

TimeZoneはオプションです。 TimeZoneが省略されている場合は、UTCが使用されます。

<EEE>, <d> <MMM> <yyyy> <HH>:<mm>:<ss> <TimeZone>

'Tue, 19 Jun 2018 16:15:41 +0300', '19 June 2018 16:15:41'

TimeZoneはオプションです。 TimeZoneが省略されている場合は、UTCが使用されます。

<yyyy>-<MM>-<dd>T<HH>:<mm>:<ss>Z

2018-06-19T16:15:41Z

UTC時間。 'T'と'Z'は大文字と小文字が区別されます。

間隔を監視する必要があります。 ダッシュ、コロン、カンマ、および文字'T'と'Z'を文字どおりに解釈します。 前述の表のプレースホルダー値を解釈するために、次のパターン構文を参照できます:

文字 日付または時刻のコンポーネント プレゼンテーション

y

M

年における月

Month

d

月における日

Day

H 日単位の時間 (00-23) 数値
m 1時間における分 数値
s 数値
E 曜日 テキスト

繰返しパターン文字は正確なプレゼンテーションを示します。 たとえば、'HH'は、'00'を使用し、'0'で午前0時を表す必要があることを意味します。 同様に、'EEE'は'Tuesday'ではなく'Tue'を意味します。 同様に、'MM'では、9月を表す'9'のかわりに'09'が必要です。

TimeZoneはオプションですが、選択した形式では、TimeZoneを次のいずれかの方法で指定できます:

  • 名前 タイムゾーンは、名前別に指定できます(GMTPDT)。 値では、大文字と小文字は区別されません。
  • 「GMTオフセット値」 タイムゾーンは、そのGMTオフセットに従って指定できます。 例:GMT-08:00 値では、大文字と小文字は区別されません。
  • ISO 8601タイムゾーン ISOの8601標準に従ってタイムゾーンを指定できます。 たとえば、-08-0800-08:00

前述のいずれかの書式を使用するかわりに、日時の値を定数nowとして指定することもできます。 定数nowは、現在の時間を1分単位の秒単位の粒度レベルまで表します。

最後に、日時の値に対して時間間隔を追加または減算できます。 たとえば、特定の時間の5分以内に作成されたリソースを問い合せることができます。 検索では、次の時間間隔がサポートされています:

文字 日付または時刻のコンポーネント

s

m

h

時間

d
w

日時の値に関する時間間隔を指定するには、次のいずれかの書式を使用します:

  • 現在 - 3h
  • 2018-06-19 16:15:41 PDT + 1h

マッチング

照合のために、where句をconditionsで使用する代わりに、または使用するだけでなく、matching句も使用できます。 matching句は、conditions (フィールド名、操作、および値を含む)を指定する必要性を排除します。 matching句は、指定したテキストと一緒に= (equals)演算子を適用することによって、すべての索引付きフィールドを効果的に問合せします。 ただし、厳密に完全一致を必要とすることはありません。 たとえば、次の問合せでは、matching句を使用して、フリー・テキスト検索と同じ方法で動作: query all resources matching 'instance' 問合せは、"instance"という単語を含むすべてのリソースとリソース属性に一致する結果を生成します。

ソート

リソース問合せの最後の句はsorted by句であり、オプションです。 sorted by句は、フィールド名に基づいて検索によって返された結果を順序付けし、指定したorderに従ってリストします。 デフォルトでは、ソート順を指定しないと、結果は常に降順で作成された日時でソートされます。

sorted by句では、次のように指定できます:

  • fieldName - 検索が結果をソートするために使用するフィールド。 任意のリソースの任意のフィールドを指定できます。 指定したフィールドを含まないリソースは、リソースの後にリストされます。
  • order - ascまたはdescのいずれかを指定できます。 ascを指定すると、結果は昇順になります。 descリストを指定すると、降順で結果が表示されます。

グループ化条件

論理演算子&& (論理ANDを示すためのアンパサンド)または|| (論理ORを示すための垂直バー)を使用して、複数の条件をグループ化できます。 次に例を示します。

licenseModel = 'LICENSE_INCLUDED' && dataStoragePercentage > 40 && lifecycleState != 'FAILED'

1つの述部グループのまわりをカッコで囲まないかぎり、2つの異なる論理演算子を同じ問合せで結合することはできません。 (複数の条件では、同じ論理演算子しか使用できません)。 次に例を示します。

(licenseModel = 'LICENSE_INCLUDED' && dataStoragePercentage > 40) || lifecycleState != 'FAILED'

上記の例では、返されるすべての結果は、"licenseModel"という名前のフィールドの値として"LICENSE_INCLUDED"と"dataStoragePercentage"というフィールドの値が40より大きいか、または"lifecycleState"フィールド名の値が他のものFAILEDよりも。

次のグループも受け入れられます:

licenseModel = 'LICENSE_INCLUDED' && (dataStoragePercentage > 40 || lifecycleState != 'FAILED')

前の例では、返されるすべての結果は、"licenseModel"という名前のフィールドの値として"LICENSE_INCLUDED"を持ち、"dataStoragePercentage"という名前のフィールドの値として40より大きい値、またはそのフィールドの"FAILED" lifecycleStateという名前のフィールドの値。

検索は、左から右への評価を実行してあいまいさを減らしたり、意図を明確にしたりしません。

複数のリソース・タイプの問合せ

問合せに参加することで、一度に複数のリソース・タイプを問合せすることができます。 各問合せには、それぞれ独自の条件文を使用できます。 結合する問合せがwhere条件と異なる場合、同じwhere条件を共有する複数のリソース・タイプに対する問合せがあると、構文は異なります。

複数のリソース・タイプの問合せの基本的な構文は次のとおりです:

query <resourceType>, <resourceType> resources

次に例を示します。

query group, user resources

この例の問合せは、すべてのグループおよびテナンシ内のすべてのユーザーを返します。

条件付きの複数リソース・タイプの問合せの構文は次のとおりですが、すべてのリソース・タイプで同じです:

query <resourceType>, <resourceType> resources where <conditions>

次に例を示します。

query group, user resources where displayName = 'administrator'

この例の問合せでは、表示名が"administrator"で、表示名が"administrator"であるすべてのユーザーと、大文字と小文字の違いがあるすべてのグループが返されます。

異なる条件を任意のリソース・タイプに適用する必要がある場合は、結合された問合せ間でカンマ区切りではなく、unionキーワードを使用する必要があります。 次に、複数リソース・タイプの問合せの構文を示します。リソース・タイプの中には、条件を共有するものと共有しないものがあります:

query <resourceType>, <resourceType> resources where <conditions> union <resourceType> resources

次に例を示します。

query group, user resources where displayName = 'administrator' union compartment resources

前の例では、表示名が"administrator"で、表示名が"administrator"であるすべてのユーザーと、カスケード・リソースおよびすべてのコンパートメント・リソースが返されます。

別の例:

query group resources union user resources where displayName = 'administrator' union compartment resources

前の例では、すべてのグループおよびすべてのコンパートメントを戻します。 また、表示名が"administrator"のすべてのユーザーとその大/小文字の相違も返されます。

必要に応じて、sorted by句を問合せの最後に追加して、すべての結果を昇順または降順で並べ替えることができます。