Tablestore SDK for Go で複数値完全一致検索を使用して、複数の完全一致クエリ値のいずれかにマッチするデータを取得します。
前提条件
Tablestore Go SDK をインストールし、クライアントを初期化します。
概要
複数値完全一致検索は、同一フィールドに対して複数の値を指定します。フィールドの値またはトークンが、クエリ値のいずれかと完全一致する場合、該当行はマッチします。これらの値は OR 演算子で結合され、トークン化されません。
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
次の例ではデータをクエリし、最大 10 行とマッチした行の総数を返します。
tableName := "example_table"
indexName := "example_index"
query := &search.TermsQuery{FieldName: "category", Terms: []interface{}{ "books", "music" }}
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)
パラメーター
クエリリクエスト
request は tablestore.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 を指定すると、行は返されません。 |
|
SetHighlight (オプション) |
*search.Highlight |
Text フィールドのサマリーおよびハイライトを構成します。詳細については、「サマリーおよびハイライト」をご参照ください。 |
|
SetCollapse (オプション) |
*search.Collapse |
クエリ結果を折りたたみます。詳細については、「クエリ結果の折りたたみ」をご参照ください。 |
|
SetSort (オプション) |
*search.Sort |
結果のソート順を指定します。詳細については、「結果のソートとページネーション」をご参照ください。 |
|
SetGetTotalCount (オプション) |
bool |
マッチしたすべての行をカウントするかどうかを指定します。デフォルト値は false です。 |
|
SetToken (オプション) |
[]byte |
前回の応答で返された NextToken 値を指定します。このメソッドは、トークンに前ページのソート条件が含まれているため、Sort をクリアします。トークンベースのページネーションを使用する場合は、Offset を指定しないでください。 |
|
SetSearchFilter (オプション) |
*search.SearchFilter |
クエリ後のフィルターを適用します。詳細については、「クエリ後のフィルターの使用」をご参照ください。 |
|
Aggregation (オプション) |
...search.Aggregation |
集約を構成します。詳細については、「集約」をご参照ください。 |
|
GroupBy (オプション) |
...search.GroupBy |
グループ化を構成します。詳細については、「集約」をご参照ください。 |
クエリ条件
クエリは search.TermsQuery 型で、以下のパラメーターを含みます。
|
名前 |
型 |
説明 |
|
FieldName (必須) |
string |
クエリ対象のインデックスフィールド名です。 |
|
Terms (必須) |
[]interface{} |
クエリ値です。これらの値は OR 演算子で結合されます。 |
返却列
request.ColumnsToGet は tablestore.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 |
グループ化結果です。 |