クエリ句は、すべての検索リクエストにおいて必須の部分です。検索対象と検索先のインデックスフィールドを指定します。論理演算子を使用して複数の条件を組み合わせ、複雑なクエリを構築します。
たとえば、TEXT 型の title フィールドと subject フィールドを組み合わせて、複合インデックスフィールド default を作成できます。その後、インデックスフィールド default に基づいて検索し、title フィールドまたは subject フィールドにクエリが含まれるドキュメントを取得できます。
また、title フィールドのみを使用してインデックスフィールド title_search を作成することもできます。これにより、インデックスフィールド title_search に基づいて検索を実行すると、title フィールドに検索クエリが含まれるドキュメントのみが取得されます。
構文
クエリ句は、以下のいずれかの形式で記述します。
| クエリタイプ | 構文 |
|---|---|
| キーワード検索 | index:'<search query>' ^ boost |
| 地理範囲検索 | index:'circle (<longitude>, <latitude>, <radius>)' |
| 数値範囲検索 | index:[<value1>, <value2>] |
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
index | String | はい | 検索対象のインデックスフィールド。インデックススキーマを定義する際に設定します。 |
search query | String | はい | 検索する term またはフレーズ。一重引用符 (') または二重引用符 ("") で囲みます。 |
boost | INT | いいえ | クエリ条件の関連性の重み。有効値:0~99。デフォルト値:99。0 未満の値は 0 として、99 を超える値は 99 として扱われます。基本ソート式で exact_match_boost() が設定されている場合にのみ有効です。 |
論理演算子
次の演算子を使用して、複数のクエリ条件を組み合わせます。すべての演算子は、大文字でなければなりません。
| 演算子 | ロジック | 優先度 (低い順) | 例 |
|---|---|---|---|
RANK | 2番目の条件に一致するドキュメントがより上位にランク付けされます | 1 (最低) | title:'cloud' RANK title:'search' |
OR | いずれかの条件に一致する必要があります | 2 | title:'cloud' OR title:'search' |
AND | 両方の条件に一致する必要があります | 3 | title:'cloud' AND type:'1' |
ANDNOT | 最初の条件に一致し、2番目の条件に一致するドキュメントは除外されます | 4 | title:'cloud' ANDNOT title:'storage' |
() | グルーピング — 最初に評価されます | 5 (最高) | (title:'a' OR title:'b') AND type:'1' |
| 文字は OR の代替形式です。
query=title:'北京大学'|'浙江大学'フレーズクエリ
検索クエリを二重引用符で囲むと、フレーズクエリを実行できます。フレーズクエリでは、すべての検索語が連結され、分析の前後で同じ順序に配置されます。
query=title:"北京大学"これにより、タイトルに「北京大学」がフレーズとして含まれるドキュメントのみが返されます。「北京の大学」を含むドキュメントは返されません。
例
単一フィールドによる検索
query=title:'北京大学'AND:両方の条件に一致する必要があります
query=title:'北京大学' AND title:'浙江大学'OR と AND:混合条件
query=(title:'北京大学' OR title:'浙江大学') AND type:'1'ANDNOT と RANK:除外とブースト
query=(title:'北京大学' ANDNOT title:'清華大学') RANK title:'校長'
// 精密ソート式: text_relevance(title)タイトルに「北京大学」を含み、「清華大学」を含まないドキュメントが返されます。その中で、タイトルに「校長」も含まれるドキュメントがより上位にランク付けされます。
ARRAY 型のインデックスフィールドの検索
// arr_index_1 は INT ARR フィールド上に構築されたインデックスです。
// arr_index_1 に値 1 が含まれるドキュメントを返します。
query=arr_index_1:'1'