Exists クエリは、NULL クエリまたは NULL 値クエリとも呼ばれます。このクエリは、スパースデータで使用され、行の列が存在するかどうかを判断します。たとえば、住所列の値が空でない行をクエリできます。
Nested 列に対して Exists クエリを実行する場合は、ネストクエリを使用できます。
列に空の値が含まれているかどうかを確認する場合は、ExistsQuery を BoolQuery の mustNotQueries と共に使用する必要があります。
次のいずれかの条件が満たされている場合、システムは列が存在しないと見なします。この例では、city 列を使用します。
検索インデックス内の city 列のタイプが、keyword などの基本タイプである場合。データテーブルに city 列が存在しない行がある場合、検索インデックスは city 列が存在しないと見なします。
検索インデックス内の city 列のタイプが、keyword などの基本タイプである場合。データテーブル内の city 列の値が空の配列である行("city" = "[]")がある場合、検索インデックスは city 列が存在しないと見なします。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成とデータの書き込みを参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成を参照してください。
パラメーター
パラメーター | 説明 |
TableName | データテーブルの名前。 |
IndexName | 検索インデックスの名前。 |
Query | クエリのタイプ。このパラメーターを ExistsQuery に設定します。 |
FieldName | クエリ対象の列の名前。 |
例
次のサンプルコードは、指定された列が空でない行をクエリする方法の例を示しています。
func ExitsQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
query := &search.ExitsQuery{} // クエリタイプを ExitsQuery に設定します。
query.FieldName = "city" // クエリ対象の列の名前を指定します。
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(query)
searchQuery.SetGetTotalCount(true)
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("TotalCount: ", searchResponse.TotalCount) // 返された行数ではなく、クエリ条件を満たす行の総数を表示するように指定します。
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ベクトル検索クエリ、ネストクエリ、Exists クエリ。検索インデックスで提供されるクエリメソッドを使用して、ビジネス要件に基づいて複数のディメンションからデータをクエリできます。
並べ替えおよびページング機能を使用して、クエリ条件を満たす行を並べ替えたりページングしたりできます。詳細については、並べ替えとページングを参照してください。
折りたたみ(重複排除)機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。このようにして、指定されたタイプのデータはクエリ結果に一度だけ表示されます。詳細については、折りたたみ(重複排除)を参照してください。
データテーブルのデータを分析する場合は、Search オペレーションの集計機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値、最大値、合計、行の総数などを取得できます。詳細については、集計とSQL クエリを参照してください。
行を並べ替えることなく、クエリ条件を満たすすべての行を取得する場合は、ParallelScan および ComputeSplits オペレーションを呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンの実行を参照してください。