使用solr 5.2.1我试图在sql中做一些事情:
SELECT COUNT(DISTINCT(SESSION_ID)), COUNTRY FROM LOG
GROUP BY COUNTRY
following答案可行,但使用json.facet,我想为此查询创建一个banan面板,而无需重新编写查询和过滤服务。
这是我到目前为止所得到的:
stats.countDistinct=true stats.distinctValues=true/false
JSON回复:
"responseHeader":{
"status":0,
"QTime":3,
"params":{
"q":"*:*",
"stats.countDistinct":"true",
"indent":"true",
"stats":"true",
"stats.facet":"country_s",
"fq":"serverUtc_dt:[2015-09-01T07:59:00.000Z TO 2015-09-01T07:59:01.000Z]",
"rows":"0",
"wt":"json",
"stats.distinctValues":"false",
"stats.field":"sessionid_s"}},
如果distinctValues为true或false,则无效,结果中不提供countDistinct
值。
以下内容:
stats.calcdistinct=true
JSON回复:
"responseHeader":{
"status":0,
"QTime":7,
"params":{
"q":"*:*",
"stats.calcdistinct":"true",
"indent":"true",
"stats":"true",
"stats.facet":"country_s",
"fq":"serverUtc_dt:[2015-09-01T07:59:00.000Z TO 2015-09-01T07:59:01.000Z]",
"rows":"0",
"wt":"json",
"stats.distinctValues":"false",
"stats.field":"sessionid_s"}},
这似乎正在做我想要的,但却为结果添加了数百个不同的值。
根据documentation calcdistinct将countDistinct和distinctValues设置为true,但用countDistinct替换calcdistinct并且distinctValues为true不会做同样的事情。
有没有办法让计数分明,而不会得到数十万个不同的值?
这可以在不使用facet.json的情况下完成吗?
答案 0 :(得分:0)
你必须使用stats.field参数来解决这个问题,不能直接使用distinctValues或countDistinct。
在我的问题中,我只需要主要域的不同计数。
"params":{
"q":"*:*",
"stats.calcdistinct":"true",
"indent":"true",
"stats":"true",
"rows":"0",
"wt":"json",
"stats.field":["{!key=c_primary_domain}c_primary_domain",
"{!distinctValues=false}c_primary_domain"]}},