Tablestore SDK for Go では、ブールクエリを使用して、AND、OR、NOT、およびフィルターロジックで複数の条件を組み合わせます。
前提条件
Tablestore SDK for Go をインストールし、クライアントを初期化します。
説明
ブールクエリは、Must 句、Should 句、MustNot 句、および Filter 句を使用してサブクエリを組み合わせます。Must 句と Filter 句は一致する必要があり、Should 句は MinShouldMatch を満たす必要があり、MustNot 句は一致してはなりません。
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
次の例では、データをクエリし、最大 10 行のデータと、一致した行の総数を返します。
tableName := "example_table"
indexName := "example_index"
query := &search.BoolQuery{MustQueries: []search.Query{&search.TermQuery{FieldName: "category", Term: "books"}}, MustNotQueries: []search.Query{&search.TermQuery{FieldName: "status", Term: "inactive"}}}
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。オフセットベースのページネーションの場合、 |
|
SetLimit (オプション) |
int32 |
返される最大行数を指定します。デフォルト値:10。最大値:100。値が 0 の場合、行は返されません。 |
|
SetHighlight (オプション) |
*search.Highlight |
Text フィールドのサマリーとハイライトを設定します。詳細については、「サマリーとハイライト」をご参照ください。 |
|
SetCollapse (オプション) |
*search.Collapse |
クエリ結果を折りたたみます。詳細については、「クエリ結果の折りたたみ」をご参照ください。 |
|
SetSort (オプション) |
*search.Sort |
結果のソート順序を指定します。詳細については、「結果のソートとページネーション」をご参照ください。 |
|
SetGetTotalCount (オプション) |
bool |
一致したすべての行をカウントするかどうかを指定します。デフォルト値:false。 |
|
SetToken (オプション) |
[]byte |
前回のレスポンスで返された |
|
SetSearchFilter (オプション) |
*search.SearchFilter |
クエリ後のフィルターを適用します。詳細については、「クエリ後フィルターの使用」をご参照ください。 |
|
Aggregation (オプション) |
...search.Aggregation |
アグリゲーションを設定します。詳細については、「アグリゲーション」をご参照ください。 |
|
GroupBy (オプション) |
...search.GroupBy |
グループ化を設定します。詳細については、「アグリゲーション」をご参照ください。 |
クエリ条件
クエリは search.BoolQuery 型で、以下のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
MustQueries (オプション) |
[]search.Query |
一致する必要があるサブクエリ。サブクエリは |
|
ShouldQueries (オプション) |
[]search.Query |
一致すべきサブクエリ。サブクエリは |
|
MustNotQueries (オプション) |
[]search.Query |
一致してはならないサブクエリ。 |
|
FilterQueries (オプション) |
[]search.Query |
一致する必要があるが、関連性スコアには影響しないサブクエリ。 |
|
MinShouldMatch (オプション) |
*string |
一致する必要がある ShouldQueries の最小数またはパーセンテージ ( |
|
Weight (オプション) |
*float32 |
関連性の重み。この値は、結果がスコアでソートされる場合にのみ順序に影響します。 |
返却列
request.ColumnsToGet は tablestore.ColumnsToGet 型で、次のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
Columns (オプション) |
[]string |
返す属性列。このパラメーターは、 |
|
ReturnAll (オプション) |
bool |
データテーブル内のすべての属性列を返すかどうかを指定します。デフォルト値:false。 |
|
ReturnAllFromIndex (オプション) |
bool |
インデックス化されたすべての属性列を返すかどうかを指定します。デフォルト値:false。このパラメーターと |
レスポンス
Search メソッドは tablestore.SearchResponse 値を返します。次の表では、主要なビジネスフィールドについて説明します。
|
名前 |
タイプ |
説明 |
|
TotalCount |
int64 |
一致した行の総数。この値は |
|
Rows |
[]*tablestore.Row |
現在のクエリによって返される行。返される行数は |
|
SearchHits |
[]*tablestore.SearchHit |
検索ヒット。ハイライト、ネストされた内部ヒット、または関連性スコアを使用する場合は、このフィールドを読み取ります。 |
|
NextToken |
[]byte |
次のページのトークン。値が空でない場合は、次のクエリに渡します。 |
|
IsAllSuccess |
bool |
すべてのインデックスパーティションがクエリされたかどうかを示します。値が false の場合、部分的な結果が返され、 |
|
AggregationResults |
search.AggregationResults |
アグリゲーション結果。 |
|
GroupByResults |
search.GroupByResults |
グループ化結果。 |