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

Tablestore:Exists クエリ

最終更新日:Aug 08, 2026

Tablestore SDK for Go で Exists クエリを使用して、指定されたインデックスフィールドを含む行を検索します。

前提条件

Tablestore Go SDK をインストールし、クライアントを初期化します。

説明

Exists クエリは、フィールド値にかかわらず、指定されたインデックスフィールドを含む行にマッチします。クエリタイプを ExistsQuery に設定します。

多次元インデックスでは、以下のケースでフィールドが存在しないとみなされます。

  • データテーブルの行にそのフィールドが含まれていない場合。

  • フィールドがキーワードなどの基本型の配列としてインデックスされており、データテーブル内のフィールド値が空の配列である場合。

func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)

次の例ではデータをクエリし、最大 10 行とマッチした行の総数を返します。

tableName := "example_table"
indexName := "example_index"

query := &search.ExistsQuery{FieldName: "status"}
searchQuery := search.NewSearchQuery().
    SetQuery(query).
    SetLimit(10).
    SetGetTotalCount(true)

response, err := client.Search(&tablestore.SearchRequest{
    TableName:   tableName,
    IndexName:   indexName,
    SearchQuery: searchQuery,
    ColumnsToGet: &tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.TotalCount)
fmt.Println(response.Rows)

パラメーター

クエリリクエスト

requesttablestore.SearchRequest 型であり、以下のパラメーターを含みます。

名前

説明

TableName (必須)

string

データテーブルの名前。

IndexName (必須)

string

検索インデックスの名前。

SearchQuery (必須)

search.SearchQuery

クエリ条件および一般的なクエリ構成。

ColumnsToGet (オプション)

*tablestore.ColumnsToGet

返却カラムの構成。このパラメーターを省略すると、プライマリキー列のみが返されます。

RoutingValues (オプション)

[]*tablestore.PrimaryKey

カスタムルートフィールドのプライマリキー値。カスタムルーティングが設定されていない場合は、このパラメーターを省略します。

TimeoutMs (オプション)

*int32

リクエストのタイムアウト期間(ミリ秒)。

クエリ構成

search.NewSearchQuery() を呼び出してクエリ構成を作成し、以下のメソッドで構成します。

名前

説明

SetQuery (必須)

search.Query

クエリ条件を指定します。

SetOffset (オプション)

int32

開始位置を指定します。デフォルト値:0。オフセットベースのページネーションでは、Offset + Limit の合計が 100,000 を超えてはなりません。

SetLimit (オプション)

int32

返却する行の最大数を指定します。デフォルト値:10。最大値:100。0 を指定すると、行は返されません。

SetCollapse (オプション)

*search.Collapse

クエリ結果を折りたたみます。詳細については、「クエリ結果の折りたたみ」をご参照ください。

SetSort (オプション)

*search.Sort

結果のソート順を指定します。詳細については、「結果のソートとページネーション」をご参照ください。

SetGetTotalCount (オプション)

bool

マッチしたすべての行をカウントするかどうかを指定します。デフォルト値:false。

SetToken (オプション)

[]byte

前回の応答で返された NextToken 値を指定します。このメソッドはトークンに前ページのソート条件が含まれているため、Sort をクリアします。トークンベースのページネーションを使用する場合は、Offset を指定しないでください。

SetSearchFilter (オプション)

*search.SearchFilter

クエリ後のフィルターを適用します。詳細については、「クエリ後のフィルターの使用」をご参照ください。

Aggregation (オプション)

...search.Aggregation

集約を構成します。詳細については、「集約」をご参照ください。

GroupBy (オプション)

...search.GroupBy

グループ化を構成します。詳細については、「集約」をご参照ください。

クエリ条件

クエリは search.ExistsQuery 型であり、以下のパラメーターを含みます。

名前

説明

FieldName (必須)

string

存在チェックを行うインデックスフィールドの名前。

返却カラム

request.ColumnsToGettablestore.ColumnsToGet 型であり、以下のパラメーターを含みます。

名前

説明

Columns (オプション)

[]string

返却する属性列。このパラメーターは、ReturnAll および ReturnAllFromIndex の両方が false の場合にのみ有効です。

ReturnAll (オプション)

bool

データテーブル内のすべての属性列を返すかどうかを指定します。デフォルト値:false。

ReturnAllFromIndex (オプション)

bool

インデックスされたすべての属性列を返すかどうかを指定します。デフォルト値:false。このパラメーターと ReturnAll を同時に true に設定しないでください。

応答

Search メソッドは tablestore.SearchResponse 値を返します。次の表は、コアビジネスフィールドについて説明しています。

名前

説明

TotalCount

int64

マッチした行の総数。この値は SetGetTotalCount に依存します。

Rows

[]*tablestore.Row

現在のクエリで返された行。その数は SetLimit で指定された値を超えないように制限されます。

SearchHits

[]*tablestore.SearchHit

検索ヒット。ハイライト、ネストされた inner hits、または関連スコアを使用する場合にこのフィールドを読み取ります。

NextToken

[]byte

次のページ用のトークン。値が空でない場合は、次のクエリに渡します。

IsAllSuccess

bool

すべてのインデックスパーティションがクエリされたかどうかを示します。値が false の場合、部分的な結果が返され、TotalCount が実際のマッチ行数より少なくなる可能性があります。

AggregationResults

search.AggregationResults

集約結果。

GroupByResults

search.GroupByResults

グループ化結果。

使用例

Nested フィールドのサブフィールドをクエリする

Nested フィールドに対して Exists クエリを実行するには、ネストされたクエリ のサブクエリとして ExistsQuery を使用します。Path には Nested フィールドの完全なパスを、FieldName にはサブフィールドの完全なパスを設定します。

query := &search.NestedQuery{
    Path: "contacts",
    Query: &search.ExistsQuery{
        FieldName: "contacts.phone",
    },
    ScoreMode: search.ScoreMode_None,
}

フィールドが存在しない行をクエリする

ExistsQueryBoolQuery.MustNotQueries 内のサブクエリとして使用して、指定されたインデックスフィールドを含まない行にマッチさせます。

query := &search.BoolQuery{
    MustNotQueries: []search.Query{
        &search.ExistsQuery{FieldName: "status"},
    },
}