Как использовать countDistinct для получения различных значений, сгруппированных по... без использования json.facet
Используя solr 5.2.1 я пытаюсь сделать что-то, что в sql будет выглядеть так:
SELECT COUNT(DISTINCT(SESSION_ID)), COUNTRY FROM LOG
GROUP BY COUNTRY
Следующий ответ будет работать, но использует json.facet, и я хотел бы создать банановую панель для этого запроса без необходимости переписывать службы запросов и фильтров.
Это то, что я получил так далеко:
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"}},
Неважно, если trueValues является истинным или ложным, нет 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"}},
Кажется, это делает то, что я хочу, но добавляет к результату сотни тысяч различных значений.
В соответствии с документацией, calcdistinct установит для countDistinct и differentValues значение true, но замена calcdistinct на countDistinct и divervalues true не делает то же самое.
Есть ли способ получить отчетливое число без получения сотен тысяч различных значений?
Можно ли это сделать без использования facet.json?
1 ответ
Вы должны использовать параметр stats.field, чтобы решить эту проблему, так как DifferentValues или 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"]}},