句の説明
クエリ句は、検索クエリの本質的な部分を構成します。クエリ句は、特定のインデックスフィールドに基づいてクエリ対象の特定のコンテンツを定義します。AND、OR、ANDNOT、RANKなどの論理演算子を使用して、複数のクエリ条件を指定し、それらの関係を定義できます。
たとえば、TEXT
タイプのtitle
フィールドとsubject
フィールドを組み合わせて、複合インデックスフィールドdefault
を作成できます。次に、インデックスフィールドdefault
に基づいて検索を実行し、title
フィールドまたはsubject
フィールドに検索クエリが含まれるドキュメントを取得できます。
また、title
フィールドのみを使用して、インデックスフィールドtitle_search
を作成することもできます。次に、インデックスフィールドtitle_search
に基づいて検索を実行すると、title
フィールドに検索クエリが含まれるドキュメントのみを取得できます。
構文
次の形式でクエリ条件を使用できます。
共通クエリ: index: '検索クエリ' ^ boost
範囲検索: index:'circle (経度, 緯度, 半径)'
範囲検索: index:[数値 1, 数値 2]
インデックスフィールド: インデックススキーマを定義するときに構成されるインデックス情報。インデックスフィールドは、指定されたインデックスフィールドのソースフィールドに検索クエリが含まれるドキュメントを検索するために使用されます。
検索クエリ: 検索するコンテンツ。
boost: 検索クエリに指定する重み。このパラメータの値はINT型である必要があります。有効な値: [0,99]。boostパラメータを設定しない場合、デフォルトのboost値は99です。このパラメータはオプションであり、粗ソート式で
exact_match_boost()
関数を構成した場合にのみ有効になります。複数のクエリ条件を指定し、
()
、AND
、OR
、ANDNOT
、RANK
などの論理演算子を使用してクエリ条件を関連付けることができます。これらの演算子はすべて大文字にする必要があります。これらの演算子は、RANK
<OR
<AND
<ANDNOT
<()
の優先順位でランク付けされます。二重引用符(
""
)で囲まれた検索クエリは、フレーズクエリです。フレーズクエリでは、すべての用語が接続され、分析の前後で同じ順序で配置されます。範囲検索は、地理位置分析と数値分析に使用されます。詳細については、範囲検索を参照してください。
使用上の注意
クエリ句は必須であり、空にすることはできません。
検索クエリは、単一引用符(')または二重引用符(")で囲む必要があります。そうしないと、クエリエラーが返されるか、予期しないクエリ結果が返されます。
TEXT
タイプとSHORT_TEXT
タイプのフィールドのみを組み合わせて複合インデックスを作成できます。boost値が0未満の場合、0が使用されます。boost値が99を超える場合、99が使用されます。
さまざまな検索の意味の詳細については、組み込みアナライザーを参照してください。
例
タイトルに「北京大学」が含まれるドキュメントを検索します。
query=title: '北京大学'
タイトルに「北京大学」と「浙江大学」が含まれるドキュメントを検索します。
query=title: '北京大学' AND title: '浙江大学'
タイトルに「北京大学」または「浙江大学」が含まれ、typeパラメータが「1」に設定されているドキュメントを検索します。
query=(title: '北京大学' OR title: '浙江大学') AND type:'1'
タイトルに「北京大学」または「浙江大学」が含まれるドキュメントを検索します。この例では、OR構文が別の形式で表示されています。
query=title: '北京大学'|'浙江大学'
タイトルに北京大学が含まれ、清華大学が含まれていないドキュメントを検索します。タイトルに校長が含まれるドキュメントが上位にランク付けされます。
query=(title:'北京大学' ANDNOT title:'清華大学') RANK title: '校長' // 詳細ソート式: text_relevance(title)
タイトルに北京大学が含まれるドキュメントを検索します。北京大学は複数の用語に分割できず、「北京の大学」などの類似の用語を含むドキュメントは返されません。
query=title: '北京大学'
ARRAYタイプのインデックスフィールドに基づいて検索を実行します。
// INT ARRタイプのフィールドがインデックスarr_index_1として使用されます。 // インデックスarr_index_1の値が1であるドキュメントを取得します。 query=arr_index_1:'1'