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

OpenSearch:filter 句

最終更新日:Dec 28, 2024

概要

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

構文

{
  "filter": ""
}

filter 句は省略可能です。 filter 句の内容は、a > 10 AND b < 100 など、さまざまな条件を含む論理式の文字列です。詳細については、このトピックの式の構文セクションを参照してください。

式の構文

1 つのフィルター条件

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

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

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

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

例:

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

複数のフィルター条件

条件 論理演算子 条件

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

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

例:

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

算術演算を含むフィルター条件

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

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

算術演算子: 算術演算子。サポートされている演算子は次のとおりです。 + - * /

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

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

例:

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

組み込み関数を含むフィルター条件

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

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

例:

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

使用上の注意

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

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

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

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

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

  • 式内の二重引用符 (" ") はエスケープする必要があります。