【问题标题】:Grouping Cassandra columns using Solr使用 Solr 对 Cassandra 列进行分组
【发布时间】:2024-01-19 21:30:01
【问题描述】:

是否可以使用 solr 按 Cassandra 列分组?

我有 2 列

ColumnA ColumnB
A         XYZ
B         BCD
C         CDE
D         DEF
A         XYZ
D         DEF
E         XYZ
A         XYZ

我想获取 ColumnA 的计数,其中 ColumnB='XYZ' 如下所示

ColumnA   count(*)
A            3
E            1

我可以得到总数

select count(*) from table 
where solr_query='{"q" : "columnB:XYZ"}

但不确定如何使用下面的方法来获得 Column wise

solr_query='{"q" : "columnB:XYZ"},{group=true&group.field=columnA}

提前致谢。

【问题讨论】:

    标签: solr group-by cassandra


    【解决方案1】:

    可以使用Facet查询来实现,但结果不会是表格格式。

    select * from table 
    where solr_query='{"q" : "columnB:XYZ","facet":{"field":"columnA","mincount":1}}'
    

    结果将类似于

    |facet_fields             |
    |-------------------------|
    |{"columnA":{"A":3,"E":1}}|
    

    计数和限制不适用于构面。 Search Query Syntax DSE

    【讨论】:

    • 如果我尝试使用“facet”,我会收到以下错误
    • com.datastax.driver.core.exceptions.InvalidQueryException: 字段缓存已禁用,将 field=application_id 设置为 docValues=true 并重新索引。或者如果字段缓存不会超过堆使用量,则在请求参数中放置 useFieldCache=true。 com.datastax.driver.core.exceptions.InvalidQueryException:字段缓存已禁用,将 field=application_id 设置为 docValues=true 并重新索引。或者如果字段缓存不会超过堆使用量,则在请求参数中放置useFieldCache=true。
    最近更新 更多