用語クエリは用語クエリと同様に機能しますが、クエリに複数のキーワードを指定して、キーワードの少なくとも 1 つと一致するデータ行を検索できます。この一致メカニズムは、SQL の IN 演算子と同等です。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化 を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成 および データの書き込み を参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成 を参照してください。
パラメーター
パラメーター | 説明 |
TableName | データテーブルの名前。 |
IndexName | 検索インデックスの名前。 |
Query | クエリのタイプ。クエリタイプを TermsQuery に設定します。 |
FieldName | クエリ対象のフィールドの名前。 |
Terms | 用語クエリの実行時にフィールド値の照合に使用されるキーワード。 キーワードの少なくとも 1 つがフィールド値と一致する場合、データ行が返されます。 |
Limit | 現在のクエリで返す最大行数。 クエリ条件を満たす行数を特定のデータを返さずにクエリする場合、Limit を 0 に設定できます。 |
ColumnsToGet | クエリ条件を満たす各行のすべての列を返すかどうかを指定します。ReturnAll パラメーターと Columns パラメーターを指定できます。 デフォルトでは、ReturnAll パラメーターは false に設定されており、すべての列が返されるわけではないことを示します。 ReturnAll パラメーターが false に設定されている場合、Columns パラメーターを使用して返す列を指定できます。 Columns パラメーターを指定しない場合、プライマリキー列のみが返されます。 ReturnAll パラメーターを true に設定すると、一致する行のすべての列が返されます。 |
例
次のサンプルコードは、Col_Keyword 列の値が「hangzhou」または「tablestore」と完全に一致する行をクエリする方法の例を示しています。
/**
* テーブル内の Col_Keyword 列の値が "hangzhou" または "tablestore" と完全に一致する行をクエリします。
*/
func TermsQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
query := &search.TermsQuery{} // クエリタイプを TermsQuery に設定します。
query.FieldName = "Col_Keyword" // クエリ条件の照合に使用するフィールドを設定します。
terms := make([]interface{}, 0)
terms = append(terms, "hangzhou")
terms = append(terms, "tablestore")
query.Terms = terms // クエリで使用されるキーワードを設定して、列の値と照合します。
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(query)
searchQuery.SetLimit(100)
searchRequest.SetSearchQuery(searchQuery)
// クエリ条件を満たす行のすべての列を返します。
searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
ReturnAll: true,
})
searchResponse, err := client.Search(searchRequest)
if err != nil {
fmt.Printf("%#v", err)
return
}
fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // クエリ条件を満たすすべての行が返されたかどうかを確認します。
fmt.Println("RowCount: ", len(searchResponse.Rows))
for _, row := range searchResponse.Rows {
jsonBody, err := json.Marshal(row)
if err != nil {
panic(err)
}
fmt.Println("Row: ", string(jsonBody))
}
}
FAQ
参考資料
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます:用語クエリ、複数用語クエリ、すべて一致クエリ、一致クエリ、一致フレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、地理位置情報クエリ、ブールクエリ、KNN ベクタークエリ、ネストされたクエリ、および 存在クエリ。検索インデックスによって提供されるクエリメソッドを使用して、ビジネス要件に基づいて複数のディメンションからデータをクエリできます。
並べ替えおよびページング機能を使用して、クエリ条件を満たす行を並べ替えたりページネーションしたりできます。詳細については、並べ替えとページング を参照してください。
折りたたみ(重複排除)機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。このようにして、指定されたタイプのデータはクエリ結果に一度だけ表示されます。詳細については、折りたたみ(重複排除) を参照してください。
データテーブル内のデータを分析する場合、Search 操作の集計機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値と最大値、合計、および行の総数を取得できます。詳細については、集計 および SQL クエリ を参照してください。
行を並べ替える必要なく、クエリ条件を満たすすべての行を取得する場合、ParallelScan および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンの実行 を参照してください。