Используя 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"}},
Неважно, истинно или ложно для параметра DifferentValues, в результате не будет предоставлено значение 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 и DifferentValues true не дает того же самого.
Есть ли способ получить количество различных значений, не получая при этом сотни тысяч различных значений?
Можно ли это сделать без использования facet.json?