Tablestore SDK for Go で完全一致検索を使用して、検索インデックス内のすべての行に一致させます。
前提条件
Tablestore Go SDK をインストールし、クライアントを初期化します。
説明
完全一致検索ではフィールドやクエリ値を指定せず、多次元インデックス内のすべての行にマッチします。クエリタイプを MatchAllQuery に設定します。
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
以下の例ではデータをクエリし、最大 10 行とマッチした行の総数を返します。
tableName := "example_table"
indexName := "example_index"
query := &search.MatchAllQuery{}
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)
MatchAllQuery は、マッチしたすべての行に同じ関連スコアを割り当てます。明示的にソート順を設定しない場合、結果の順序は保証されません。行データを返さずにマッチした行数をカウントするには、SetLimit を 0 に設定します。すべてのマッチ行をカウントすると、クエリのオーバーヘッドが増加します。
パラメーター
クエリリクエスト
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 を指定すると、行は返されません。 |
|
SetCollapse (オプション) |
*search.Collapse |
クエリ結果を折りたたみます。詳細については、「クエリ結果の折りたたみ」をご参照ください。 |
|
SetSort (オプション) |
*search.Sort |
結果のソート順を指定します。詳細については、「結果のソートとページネーション」をご参照ください。 |
|
SetGetTotalCount (オプション) |
bool |
マッチしたすべての行をカウントするかどうかを指定します。デフォルト値は false です。 |
|
SetToken (オプション) |
[]byte |
前回の応答で返された NextToken 値を指定します。トークンには前ページのソート条件が含まれているため、このメソッドは Sort をクリアします。トークンベースのページネーションを使用する場合は、Offset を指定しないでください。 |
|
SetSearchFilter (オプション) |
*search.SearchFilter |
クエリ後のフィルターを適用します。詳細については、「クエリ後のフィルターの使用」をご参照ください。 |
|
Aggregation (オプション) |
...search.Aggregation |
集約を構成します。詳細については、「集約」をご参照ください。 |
|
GroupBy (オプション) |
...search.GroupBy |
グループ化を構成します。詳細については、「集約」をご参照ください。 |
返却カラム
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 |
グループ化結果です。 |