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

Tablestore:ブールクエリ

最終更新日:Dec 28, 2024

ブールクエリは、サブクエリの組み合わせに基づいてデータテーブル内のデータを取得します。 Tablestoreは、サブクエリの条件を満たす行を返します。 サブクエリは、ブールクエリを含む任意のタイプにすることができます。

前提条件

パラメータ

パラメータ

説明

tableName

データテーブルの名前。

indexName

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

mustQueries

クエリ結果が一致する必要があるサブクエリのリスト。 このパラメータはAND演算子と同等です。

mustNotQueries

クエリ結果が一致してはならないサブクエリのリスト。 このパラメータはNOT演算子と同等です。

filterQueries

サブクエリのリスト。 すべてのサブフィルタに一致する行のみが返されます。 フィルタはクエリに似ていますが、フィルタは、行が一致するサブフィルタの数に基づいて関連性スコアを計算しません。

shouldQueries

クエリ結果が一致しても一致しなくてもよいサブクエリのリスト。 このパラメータはOR演算子と同等です。

shouldQueriesで指定された最小数のサブクエリ条件を満たす行のみが返されます。

全体的な関連性スコアが高いほど、shouldQueriesで指定されたより多くのサブクエリ条件が満たされていることを示します。

minimumShouldMatch

行が満たす必要がある、shouldQueriesで指定されたサブクエリ条件の最小数。 shouldQueriesで指定されたサブクエリ条件以外のサブクエリ条件が指定されていない場合、minimumShouldMatchパラメータのデフォルト値は1です。 mustQueries、mustNotQueries、filterQueriesで指定されたサブクエリ条件など、他のサブクエリ条件が指定されている場合、minimumShouldMatchパラメータのデフォルト値は0です。

次のコードは、サブクエリの組み合わせに基づいて行をクエリするためのブールクエリを構築する方法の例を示しています。

var client = require('../client');
var TableStore = require('../../index.js');
var Long = TableStore.Long;
/**
 * 次の操作を実装するためにブールクエリを実行します。(col2 < 4 or col 3 < 5) or (col2 = 4 and (col3 = 5 or col3 = 6))。 次のロジックが使用されます。
 * boolQuery1 = rangeQuery(col2<4) or rangeQuery(col3<5)
 * boolQuery2 = termQuery(col3=5) or (col3=6)
 * boolQuery3 = termQuery(col2=4) and boolquery2
 * boolQuery4 = boolQuery1 or boolQuery3
 */
client.search({
    tableName: "sampleTable",
    indexName: "sampleSearchIndex",
    searchQuery: {
        offset: 0, // オフセット値をクエリします。
        limit: 10, // 特定のデータを返さずにクエリ条件を満たす行の数のみをクエリするには、limitを0に設定できます。 この方法では、Tablestoreは、テーブルからの特定のデータなしで、クエリ条件を満たす行の数を返します。
        getTotalCount: false, // クエリ条件を満たす行の総数を返すかどうかを指定します。 このパラメータのデフォルト値はfalseで、クエリ条件を満たす行の総数は返されないことを示します。
        query: { // boolQuery4を構築します。 boolQuery1とboolQuery3の少なくとも1つを満たすクエリ条件を指定します。
            queryType: TableStore.QueryType.BOOL_QUERY,
            query: {
                shouldQueries: [ // mustQueries、shouldQueries、またはmustNotQueriesを指定します。
                    { // boolQuery1を構築します。 クエリ条件1とクエリ条件2の少なくとも1つを満たすクエリ条件を指定します。
                        queryType: TableStore.QueryType.BOOL_QUERY,
                        query: {
                            // shouldQueriesを指定して、値が4未満のcol2列を含む行、または値が5未満のcol3列を含む行をクエリします。
                            shouldQueries:[
                                {
                                    // クエリ条件1:範囲クエリを実行して、値が4未満のcol2列を含む行をクエリします。
                                    queryType: TableStore.QueryType.RANGE_QUERY,
                                    query:{
                                        fieldName: "col2",
                                        rangeTo: 4
                                    }
                                },
                                {
                                    // クエリ条件2:範囲クエリを実行して、値が5未満のcol3列を含む行をクエリします。
                                    queryType: TableStore.QueryType.RANGE_QUERY,
                                    query:{
                                        fieldName: "col3",
                                        rangeTo: 5
                                    }
                                }
                            ],
                            minimumShouldMatch:1

                        }
                    },
                    { // boolQuery3を構築します。 クエリ条件3とboolQuery2の条件を満たすクエリ条件を指定します。
                        queryType: TableStore.QueryType.BOOL_QUERY,
                        query: {
                            mustQueries: [
                                // mustQueriesを指定して、値が4に等しいcol2列と、値が5または6に等しいcol3列を含む行をクエリします。
                                {
                                    // クエリ条件3:タームクエリを実行して、値が4に等しいcol2列を含む行をクエリします。
                                    queryType:TableStore.QueryType.TERM_QUERY,
                                    query: {
                                        fieldName : "col2",
                                        term: 4
                                    }
                                },
                                { // boolQuery2を構築します。 クエリ条件4とクエリ条件5の少なくとも1つを満たすクエリ条件を指定します。
                                    queryType: TableStore.QueryType.BOOL_QUERY,
                                    query: {
                                        // shouldQueriesを指定して、値が5または6に等しいcol3列を含む行をクエリします。
                                        shouldQueries:[
                                            {
                                                // クエリ条件4:タームクエリを実行して、値が5に等しいcol3列を含む行をクエリします。
                                                queryType: TableStore.QueryType.TERM_QUERY,
                                                query:{
                                                    fieldName:"col3",
                                                    term: 5
                                                }
                                            },
                                            {
                                                // クエリ条件5:タームクエリを実行して、値が6に等しいcol3列を含む行をクエリします。
                                                queryType: TableStore.QueryType.TERM_QUERY,
                                                query:{
                                                    fieldName:"col3",
                                                    term: 6
                                                }
                                            }
                                        ],
                                        minimumShouldMatch:1
                                    }
                                }
                            ]
                        }
                    }
                ],
                minimumShouldMatch: 1 // 満たす必要がある最小条件数を指定します。 このパラメータは、サブクエリ条件がshouldQueriesによってのみ指定されている場合に有効です。
            }
        },
    },
    columnToGet: { // 返す列を指定します。 RETURN_SPECIFIEDパラメータを設定して指定された列を返すか、RETURN_ALLパラメータを設定してすべての列を返すか、RETURN_ALL_FROM_INDEXパラメータを設定して検索インデックス内のすべての列を返すか、RETURN_NONEパラメータを設定して主キー列のみを返すことができます。
        returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
        returnNames: ["col2", "col3", "col4"]
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data, null, 2));
});

FAQ

参考資料