BoolQuery查询条件包含一个或者多个子查询条件,根据子查询条件来判断一行数据是否满足查询条件。每个子查询条件可以是任意一种Query类型,包括BoolQuery。

前提条件

  • 已初始化Client,详情请参见初始化
  • 已创建数据表并写入数据。
  • 已在数据表上创建多元索引,详情请参见创建多元索引

参数

参数 说明
tableName 数据表名称。
indexName 多元索引名称。
mustQueries 多个Query列表,行数据必须满足所有的子查询条件才算匹配,等价于And操作符。
mustNotQueries 多个Query列表,行数据必须不能满足任何的子查询条件才算匹配,等价于Not操作符。
filterQueries 多个Query列表,行数据必须满足所有的子filter才算匹配,filter类似于query,区别是filter不会根据满足的filter个数进行相关性算分。
shouldQueries 多个Query列表,可以满足,也可以不满足,等价于Or操作符。

行数据应该至少满足shouldQueries子查询条件的最小匹配个数才算匹配。

如果满足的shouldQueries子查询条件个数越多,则整体的相关性分数更高。

minimumShouldMatch shouldQueries的最小匹配个数。默认值为1。

示例

通过构造一个BoolQuery进行多条件组合查询。

查询条件 说明
mustQueries: (A AND B) 设置查询条件是必须同时满足"查询条件一"和"查询条件二"。
shouldQueries: (A OR B) 设置查询条件是至少满足"查询条件一"和"查询条件二"中的一个条件。

minimumShouldMatch定义了至少满足几个shouldQueries子查询条件。默认值为1。

filterQueries: (A AND B) 行数据必须完全匹配所有的子filter, filter类似于query,区别是不会进行相关性算分。
mustNotQueries: (!A AND !B) 设置查询条件是必须【同时不满足】"查询条件一"和"查询条件二"。
/**
 * 通过构造一个BoolQuery进行多条件组合查询。
 */
client.search({
    tableName: TABLE_NAME,
    indexName: INDEX_NAME,
    searchQuery: {
        offset: 0,
        limit: 10, //如果只为了获取行数,无需获取具体数据,可以设置limit=0,即不返回任意一行数据。
        query: { //设置查询类型为TableStore.QueryType.BOOL_QUERY。
            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 //仅shouldQueries时有效,至少满足的条件个数。
            }
        },
        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));
});