您可以使用BoolQuery进行复合条件查询。复合查询条件可以包含一个或者多个子查询条件,根据子查询条件是否满足来判断一行数据是否满足查询条件。

可以设置多种组合方式,例如设置多个子查询条件为mustQueries,则要求这些子查询条件必须都满足。设置多个子查询条件为mustNotQueries时,要求这些子查询条件都不能满足。

示例

/**
 * 通过构造一个BoolQuery进行复合条件查询。参数说明
 * mustQueries: (A AND B)设置查询条件是必须【同时满足】"条件一"和"条件二"
 * shouldQueries: (A OR B)设置查询条件是【至少满足】"条件一"和"条件二"中的一个条件
 * filterQueries: (A AND B)文档必须完全匹配所有的子filter, filter类似于query,区别是不会进行算分
 * mustNotQueries: (!A AND !B)设置查询条件是必须【同时不满足】"条件一"和"条件二"
 * minimumShouldMatch: 定义了至少满足几个shouldQueries子句,默认是1.
 */
client.search({
    tableName: TABLE_NAME,
    indexName: INDEX_NAME,
    searchQuery: {
        offset: 0,
        limit: 10, //如果只为了取行数,但不需要具体数据,可以设置limit=0,即不返回任意一行数据。
        query: {//6
            queryType: TableStore.QueryType.BOOL_QUERY,
            query: {
                mustQueries: [ //可选:mustQueries, shouldQueries, mustNotQueries 
                    { //查询条件一:RangeQuery,Col_Long这一列的值要大于3
                        queryType: TableStore.QueryType.RANGE_QUERY,
                        query: {
                            fieldName: "Col_Long",
                            rangeFrom: 3,
                            includeLower: true
                        }
                    },
                    { //查询条件二:MatchQuery,Col_Keyword这一列的值要匹配"hangzhou"
                        queryType: TableStore.QueryType.TERM_QUERY,
                        query: {
                            fieldName: "Col_Keyword",
                            term: "hangzhou"
                        }
                    }
                ],
                minimumShouldMatch: 1 //仅shouldQueries2有效,至少满足的条件数
            }
        },
        getTotalCount: true // 结果中的TotalCount可以表示表中数据的总行数, 默认false不返回
    },
    columnToGet: { //返回列设置:RETURN_SPECIFIED(自定义),RETURN_ALL(所有列),RETURN_NONE(不返回)
        returnType: TableStore.ColumnReturnType.RETURN_ALL
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data, null, 2));
});