Как использовать 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"]}},
Другие вопросы по тегам