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

Tablestore:Exists クエリ

最終更新日:Dec 28, 2024

Exists クエリは、NULL クエリまたは NULL 値クエリとも呼ばれます。このクエリは、スパースデータで使用され、行の列が存在するかどうかを判断します。たとえば、住所列の値が空でない行をクエリできます。

説明
  • Nested 列に対して Exists クエリを実行する場合は、ネストクエリを使用できます。

  • 列に空の値が含まれているかどうかを確認する場合は、ExistsQuery を BoolQuery の mustNotQueries と共に使用する必要があります。

  • 次のいずれかの条件が満たされている場合、システムは列が存在しないと見なします。この例では、city 列を使用します。

    • 検索インデックス内の city 列のタイプが、keyword などの基本タイプである場合。データテーブルに city 列が存在しない行がある場合、検索インデックスは city 列が存在しないと見なします。

    • 検索インデックス内の city 列のタイプが、keyword などの基本タイプである場合。データテーブル内の city 列の値が空の配列である行("city" = "[]")がある場合、検索インデックスは city 列が存在しないと見なします。

前提条件

パラメーター

パラメーター

説明

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

関連情報