Как использовать 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"}},

Неважно, истинно или ложно для параметра 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?


person HMR    schedule 26.10.2015    source источник
comment
Не могли бы вы добавить значения json.facet в качестве requestHandler с этими значениями, жестко запрограммированными на стороне сервера?   -  person MatsLindh    schedule 26.10.2015
comment
@MatsLindh Спасибо за ваш ответ, я, вероятно, решу это с помощью пользовательской панели, сначала нужно получить шелк (поскольку это более новый банан, я думаю) и повозиться с ним. Надеялся, что пропустил и нашел более простое решение. Службы запросов и фильтров не пострадают, если панель добавит json.facet к URL-адресу после их завершения.   -  person HMR    schedule 27.10.2015
comment
вам удалось интегрировать вывод запроса на панель в банане? Я поражен той же проблемой получения стольких различных значений.   -  person Ramzy    schedule 01.02.2016
comment
@HMR Привет, ребята, вы решили эту проблему? Каково ваше решение? У меня та же проблема. Заранее спасибо.   -  person zhouxiang    schedule 19.08.2016
comment
@zhouxiang Требования изменились, и мы больше не используем для этого solr.   -  person HMR    schedule 23.08.2016
comment
@HMR большое спасибо. Наконец-то я решил это, используя локальные параметры, которые добавлены с версии 5.2.   -  person zhouxiang    schedule 24.08.2016


Ответы (1)


Вы должны использовать параметр stats.field, чтобы решить эту проблему, в отличие от 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"]}},
person kishore    schedule 07.02.2018