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

OpenSearch:filter 句

最終更新日:Dec 28, 2024

説明

filter 句で条件を指定して、取得するドキュメントをクエリできます。システムは、クエリ句を使用してクエリしたドキュメントを取得した後、filter 句で指定した条件に基づいてドキュメントをフィルタリングし、指定した条件に一致するドキュメントを返します。filter 句はオプションです。

構文

1 つの条件を指定する

filter=左辺オペランド 比較演算子 右辺オペランド

左辺オペランド: 属性フィールドまたは定数。定数は数値または文字列です。

比較演算子: 比較演算子。サポートされている演算子は次のとおりです。> < = <= >= !=

右辺オペランド: 属性フィールドまたは定数。定数は数値または文字列です。

例:

filter=price > 100: この句を使用して、price フィールドの値が 100 より大きいドキュメントをクエリできます。
filter=ids=1: ids フィールドは複数値フィールドです。この句を使用して、ids フィールドの値に 1 が含まれるドキュメントをクエリできます。
filter=province!= "Zhejiang": この句を使用して、province フィールドの値が浙江省ではないドキュメントをクエリできます。

複数の条件を指定する

filter=条件 演算子 条件

条件: price > 100 などの関係式。

演算子: AND 演算子または OR 演算子。AND 演算子を使用すると、システムは両方の条件に一致するドキュメントを返します。OR 演算子を使用すると、システムは一方の条件に一致するドキュメントを返します。最も優先順位の高い条件を括弧()で囲むこともできます。

例:

filter=price > 100 AND categoryId=10: この句を使用して、categoryId フィールドの値が 10 で、price フィールドの値が 100 より大きいドキュメントをクエリできます。
filter=categoryId = 100 OR categoryId=10: この句を使用して、categoryId フィールドの値が 10 または price フィールドの値が 100 より大きいドキュメントをクエリできます。
filter=(categoryId = 100 OR categoryId=10) AND price > 100: この句を使用して、categoryId フィールドの値が 100 または 10 で、price フィールドの値が 100 より大きいドキュメントをクエリできます。

算術式を使用して条件を指定する

filter=左辺オペランド 算術演算子 右辺オペランド 比較演算子 条件値

左辺オペランド: 属性フィールドまたは定数。定数は数値または文字列です。

算術演算子: 算術演算子。サポートされている算術演算子は、加算演算子(+)、減算演算子(-)、乗算演算子(*)、除算演算子(/)です。

右辺オペランド: 属性フィールドまたは定数。定数は数値または文字列です。

条件値: 属性フィールドまたは定数。

例:

filter=price*0.5 > 100: この句を使用して、price フィールドの値に 0.5 を掛けた積が 100 より大きい各ドキュメントをクエリできます。
filter=price-cost > 100: この句を使用して、price フィールドの値と cost フィールドの値の差が 100 より大きい各ドキュメントをクエリできます。
filter=(price*0.5 > 100) AND categoryId=10: この句を使用して、price フィールドの値に 0.5 を掛けた積が 100 より大きく、categoryId フィールドの値が 10 である各ドキュメントをクエリできます。

関数を使用して条件を指定する

filter=関数 比較演算子 右辺オペランド

組み込み関数を使用して、in や notin などの条件を指定できます。組み込み関数の詳細については、「組み込み関数」を参照してください。使用する関数が BOOLEAN 型の値を返す場合、filter 句で比較演算子を指定する必要はありません。比較演算子の右辺オペランドとして関数を指定することもできます。

例:

filter=in(id,"1|2|3"): この句を使用して、id フィールドの値が 1、2、または 3 であるドキュメントをクエリできます。

使用上の注意

  • filter 句で指定するフィールドは、schema.json ファイルで指定した属性フィールドである必要があります。

  • 精度の問題により、FLOAT 型または DOUBLE 型の値が別の値と等しいかどうかを確認できません。filter 句で FLOAT 型または DOUBLE 型のフィールドが必要な場合は、より大きい演算子(>)とより小さい演算子(<)を含む式を使用して関係を定義できます。

  • filter 句では、STRING 型の値を二重引用符( '')で囲む必要があります。文字列を含む式に比較演算子を指定して、文字列と別の値の関係を定義できます。算術演算子を使用して文字列と別の値の関係を定義することはできません。

  • STRING 型のフィールドを含む式では、等号演算子(=)または不等号演算子(!=)を使用できますが、より大きい演算子(>)またはより小さい演算子(<)は使用できません。

  • 等号演算子(=)または不等号演算子(!=)を使用して複数値フィールドと条件値の関係を定義すると、システムは複数値フィールドの値に条件値が含まれるドキュメントを返します。