すべてのプロダクト
Search
ドキュメントセンター

:クエリ句

最終更新日:Dec 28, 2024

概要

クエリ句は、ステートメントの最も基本的で不可欠な部分です。クエリ句は、特定のインデックスフィールドに基づいてクエリする具体的な内容を定義します。AND、OR、ANDNOT、RANKなどの論理演算子を使用して、複数のクエリ条件を指定し、それらの関係を定義できます。

たとえば、テーブルにはTEXT型のtitleフィールドとsubjectフィールドが含まれています。これらのフィールドに基づいて、defaultという名前の複合インデックスを作成できます。ステートメントのクエリ句では、defaultインデックスと、titleフィールドまたはsubjectフィールドの用語で構成される検索クエリを指定して、検索クエリに一致するドキュメントをクエリできます。

titleフィールドに基づいてtitle_searchという名前のインデックスを作成することもできます。 title_searchインデックスに基づいてクエリを実行すると、システムは、titleフィールドの値が指定した検索クエリに一致するドキュメントのみを返します。

構文

{
  "query": ""
}

クエリ句は、クエリステートメントの必須部分です。クエリ句の内容は、クエリを実行する基になるインデックスと検索クエリで構成される文字列です。例:title:'OpenSearch' AND tag:'1'。クエリ構文の詳細については、このトピックの単純クエリセクションと高度なクエリセクションを参照してください。

単純クエリ

構文:

Index name:'Search query'^boost Logical operator Index name:'Search query'^boost
  • インデックス名:クエリを実行する基になるインデックス。指定されたインデックスは、作成するインデックススキーマに含まれている必要があります。システムは、指定されたインデックスの作成基になったフィールドの値をスキャンし、フィールドの値が指定した検索クエリに一致するドキュメントを返します。

  • 検索クエリ:検索するコンテンツ。

  • boost:検索クエリに指定する重み。このパラメータの値はINT型である必要があります。有効な値:[0,99]。 boostパラメータを指定しない場合、デフォルトのboost値は99です。

  • 複数の演算子を使用して、クエリ条件間の論理関係を定義できます。サポートされている演算子は、()ANDORANDNOTRANKです。演算子は大文字で指定する必要があります。これらの演算子の優先順位は、RANK < OR < AND < ANDNOT < () の順です。

    • 2つのクエリ条件の間にAND演算子を指定すると、システムは両方のクエリ条件に一致するドキュメントのみを返します。たとえば、query=default:'Mobile Phone' AND default:'Bluetooth'句を使用して、Mobile PhoneとBluetoothを含むドキュメントをクエリできます。

    • 2つのクエリ条件の間にOR演算子を指定すると、システムは一方のクエリ条件に一致するドキュメントを返します。たとえば、query=default:'Mobile Phone' OR default:'Bluetooth'句を使用して、Mobile PhoneまたはBluetoothを含むドキュメントをクエリできます。

    • 2つのクエリ条件の間にANDNOT演算子を指定すると、システムは左の条件のみに一致するドキュメントを返します。たとえば、query=default:'Mobile Phone' ANDNOT default:'Bluetooth'句を使用して、Mobile Phoneを含み、Bluetoothを含まないドキュメントをクエリできます。

    • 2つのクエリ条件の間にRANK演算子を指定すると、システムは左の条件に一致し、右の条件に一致しない可能性のあるドキュメントを返します。たとえば、query=default:'Mobile Phone' RANK default:'Bluetooth'句を使用して、Mobile Phoneを含み、Bluetoothを含まない可能性のあるドキュメントをクエリできます。特定の検索クエリが関連性スコアを計算するために必要であり、これらの検索クエリがクエリ結果に影響を与えない場合、この演算子を使用できます。前の例では、default:'Bluetooth'条件を使用して、ドキュメント内のテキストに基づいて関連性スコアを計算します。この場合、Bluetoothを含むドキュメントには高いランクが割り当てられます。

高度なクエリ

同じインデックスに基づく複数の検索クエリ

構文:

Index name:'Search query'^boost | 'Search query'^boost
 Index name:'Search query'^boost & 'Search query'^boost

縦棒(|)はOR演算子を指定します。アンパサンド(&)はAND演算子を指定します。

フレーズクエリ

構文:

Index name:"Search query"^boost Logical operator Index name:"Search query"^boost

  • フレーズクエリステートメントを作成するときは、各検索クエリを二重引用符(" ")で囲みます。フレーズクエリでは、すべての用語が接続され、分析の前後で同じ順序で配置されます。

  • 範囲クエリには、地理クエリと値範囲クエリが含まれます。詳細については、以下のセクションを参照してください。

  • クエリ句を生成するときは、フレーズクエリ内の二重引用符をエスケープします。

地理クエリ

構文:

Index name:'SHAPE(ARGS...)'

クエリ句には、次のSHAPE(ARGS...)を指定できます。

  • 点:point(LON LAT)形式で点を指定できます。LONは点の経度値を指定し、LATは点の緯度値を指定します。経度値と緯度値はスペースで区切ります。

  • 円:circle(LON LAT,Radius)形式で円を指定できます。LONは円の中心の経度値を指定し、LATは円の中心の緯度値を指定し、Radiusは円の半径を指定します。単位:メートル。

  • 矩形:rectangle(minLON minLAT,maxLON maxLAT)形式で矩形を指定できます。緯度値については、maxLATの値はminLAT以上である必要があります。 maxLAT値がminLAT値より小さい場合、システムは自動的に値を交換します。経度値については、minLONの値はmaxLONの値より小さい必要があります。指定されたminLONの値が指定されたmaxLONの値より大きい場合、結果は正しくありません。

  • 多角形:polygon(LON1 LAT1,LON2 LAT2,LON3 LAT3,LON4 LAT4,...)形式で多角形を指定できます。凸多角形または凹多角形を指定できます。多角形の始点と終点は同じ点である必要があります。隣接する辺が同一線上にある場合、または辺が交差する場合、指定することはできません。

注:

  • 指定するインデックスはSPATIAL型である必要があります。

  • 円を定義するために使用する式は、一重引用符(' ')で囲む必要があります。例:query=spatial_index:'circle(130.0 10.0,1000.0)'。

  • 線と多角形の点座標は、経度180度を横切る場合に関係なく、平面世界地図にマッピングされ、線クエリと多角形クエリの範囲が決定されます。位置フィールドの転置インデックスのクエリ結果は正確です。線と多角形フィールドの転置インデックスのクエリ結果はフィルタリングする必要があります。

値範囲クエリ

構文:

Index name:(Numeric 1,Numeric 2]

Numeric 1は値範囲の開始を指定し、Numeric 2は値範囲の終了を指定します。開端点と閉端点を使用して範囲を指定できます。サンプルコードでは、Numeric 1の前の開き括弧(はNumeric 1が開端点であることを指定し、Numeric 2の隣の閉じ括弧]はNumeric 2が閉端点であることを指定します。

例:

query=price:(3,100):3より大きく100より小さい値をクエリします。

query=price:[3,100]:3以上100以下の値をクエリします。

query=price:(3,100]:3より大きく100以下の値をクエリします。

query=price:(,100):100より小さい値をクエリします。この句では、値範囲の開始は指定されていません。

注:

  • インデックスフィールドは数値型である必要があります。

  • 指定されたフィールドの値は整数である必要があります。浮動小数点数はサポートされていません。

日付クエリ

構文:

Index name:(Start time,End time]

開始時刻と終了時刻のタイムスタンプはINTEGER型であり、ミリ秒単位まで正確である必要があります。開始時刻を指定しない場合、システムは値0からスキャンを開始します。終了時刻を指定しない場合、デフォルト値4102416000000が使用されます。デフォルト値は、次のタイムスタンプを示します:2100-01-01 00:00。開端点と閉端点を使用して範囲を指定できます。

注:

  • インデックスフィールドはDATE型である必要があります。

  • タイムスタンプはINTEGER型であり、ミリ秒単位まで正確である必要があります。指定したタイムスタンプが4102416000000を超える場合、システムはタイムスタンプとして4102416000000を使用します。