小编kaz*_*azy的帖子

Cassandra(CQL)中的结果分页

我想知道如何使用Cassandra实现分页.

我们说我有一个博客.该博客每页最多列出10个帖子.要访问下一篇文章,用户必须单击分页菜单才能访问第2页(帖子11-20),第3页(帖子21-30)等.

在MySQL下使用SQL,我可以执行以下操作:

SELECT * FROM posts LIMIT 20,10;
Run Code Online (Sandbox Code Playgroud)

LIMIT的第一个参数从结果集的开头偏移,第二个参数是要获取的行数.上面的示例从第20行开始返回10行.

如何在CQL中实现相同的效果?

我在Google上找到了一些解决方案,但所有这些解决方案都需要"以前查询的最后结果".它适用于将"下一个"按钮分页到另一个10结果集,但如果我想从第1页跳到第5页怎么办?

cql cassandra datastax-enterprise cql3

32
推荐指数
3
解决办法
4万
查看次数

Cassandra CQL在列表中搜索元素

我有一个list类型(标签)列的表:

CREATE TABLE "Videos" (
    video_id UUID,
    title VARCHAR,
    tags LIST<VARCHAR>,
    PRIMARY KEY (video_id, upload_timestamp)
) WITH CLUSTERING ORDER BY (upload_timestamp DESC);
Run Code Online (Sandbox Code Playgroud)

我有很多行包含列中的各种值tags,即.["outdoor","funny cats","funny mice"].

我想执行一个SELECT查询,该查询将返回列中包含"有趣的猫"的所有行tags.我怎样才能做到这一点?

cql cassandra datastax-enterprise cql3

4
推荐指数
1
解决办法
9020
查看次数

DSE/Cassandra CQL now()不适用于时间戳类型

使用类型now()函数时遇到麻烦timestamp.

请看下面的代码:

表创建:

CREATE TABLE "Test" (
    video_id UUID,
    upload_timestamp TIMESTAMP,
    title VARCHAR,
    views INT,
    PRIMARY KEY (video_id, upload_timestamp)
) WITH CLUSTERING ORDER BY (upload_timestamp DESC);
Run Code Online (Sandbox Code Playgroud)

有问题的INSERT查询:

INSERT INTO "Test" (video_id, upload_timestamp, title, views)
    VALUES (uuid(), now(), 'Test', 0);
Run Code Online (Sandbox Code Playgroud)

INSERT查询似乎对我来说很好.但是,当我执行它时,我看到以下错误:

Unable to execute CQL script on 'XXX': cannot assign result of function now (type timeuuid) to upload_timestamp (type timestamp)

我在这做错了什么?

我使用DataStax Enterprise 4.5.2

cql cassandra datastax-enterprise

2
推荐指数
1
解决办法
1463
查看次数

在DataStax Enterprise中将PreparedStatement与solr_query一起使用

我试图用PreparedStatementsolr_query使用下面的代码:

PreparedStatement preparedStatement = cassandraSession.prepare(
    "SELECT * FROM users WHERE solr_query = 'username:? OR email:?';"
);

BoundStatement boundStatement = new BoundStatement(preparedStatement);

ResultSet results = cassandraSession.execute(
    boundStatement.bind(
        username,
        email
    )
);
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,我得到以下异常: java.lang.IllegalArgumentException: Prepared statement has only 0 variables, 2 values provided

如何正确使用solr_query的预准备语句?

我使用的是DataStax Enterprise 4.5.3,它使用Cassandra 2.0.11.82和Solr 4.6.0.2.8.我正在使用DataStax Java驱动程序.

solr datastax-enterprise datastax-java-driver datastax

2
推荐指数
1
解决办法
1231
查看次数