Tablestore SDK for Go でネストされたクエリを使用して、Nested フィールドの同じ子行内にある条件に一致させます。
前提条件
Tablestore Go SDK をインストールし、クライアントを初期化します。
概要
Nested フィールド内の各子行は、独立したネストされたドキュメントとしてインデックスされます。ネストされたクエリにより、複数の子フィールドに対する条件が同じ子行内で一致することを保証し、異なる子行間でのマッチを回避します。
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
次の例ではデータをクエリし、最大 10 行と一致した行の総数を返します。
tableName := "example_table"
indexName := "example_index"
query := &search.NestedQuery{Path: "items", Query: &search.TermQuery{FieldName: "items.name", Term: "alice"}, ScoreMode: search.ScoreMode_Avg}
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 を指定すると、行は返されません。 |
|
SetCollapse (オプション) |
*search.Collapse |
クエリ結果を折りたたみます。詳細については、「クエリ結果の折りたたみ」をご参照ください。 |
|
SetSort (オプション) |
*search.Sort |
結果のソート順を指定します。詳細については、「結果のソートとページネーション」をご参照ください。 |
|
SetGetTotalCount (オプション) |
bool |
一致したすべての行をカウントするかどうかを指定します。デフォルト値は false です。 |
|
SetToken (オプション) |
[]byte |
前回の応答で返された NextToken 値を指定します。このメソッドはトークンに前ページのソート条件が含まれているため、Sort をクリアします。トークンベースのページネーションを使用する場合は、Offset を指定しないでください。 |
|
SetSearchFilter (オプション) |
*search.SearchFilter |
クエリ後のフィルターを適用します。詳細については、「クエリ後のフィルターの使用」をご参照ください。 |
|
Aggregation (オプション) |
...search.Aggregation |
集約を構成します。詳細については、「集約」をご参照ください。 |
|
GroupBy (オプション) |
...search.GroupBy |
グループ化を構成します。詳細については、「集約」をご参照ください。 |
クエリ条件
クエリは search.NestedQuery 型で、以下のパラメーターを含みます。
|
名前 |
型 |
説明 |
|
Path (必須) |
string |
Nested フィールドのパスです。 |
|
Query (必須) |
search.Query |
子フィールドに対するクエリです。子フィールドには |
|
ScoreMode (オプション) |
search.ScoreMode |
一致した子行からのスコアを結合する方法です。 |
|
InnerHits (オプション) |
*search.InnerHits |
一致した子行を返し、子行に対してページネーション、ソート、ハイライトを構成できます。 |
Inner hits 構成
InnerHits は以下のパラメーターを含みます。
|
名前 |
型 |
説明 |
|
Offset (オプション) |
*int32 |
一致した子行の開始位置です。 |
|
Limit (オプション) |
*int32 |
返却する一致した子行の数です。デフォルト値は 3 です。 |
|
Sort (オプション) |
*search.Sort |
一致した子行のソート順です。 |
|
Highlight (オプション) |
*search.Highlight |
Nested 子フィールドのまとめおよびハイライト構成です。詳細については、「まとめとハイライト」をご参照ください。 |
返却カラム
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 |
グループ化結果です。 |