У меня много документов в Solr 7 со схемой, приведенной ниже: (Я упростил данные).
У меня есть большие возможности для значений "пользователь" и "дата".
{
"user":"user1",
"date":"2019-01-01T00:00:00Z",
},
{
"user":"user1",
"date":"2019-01-01T01:00:00Z",
},
{
"user":"user2",
"date":"2019-01-02T00:00:00Z",
},
{
"user":"user3",
"date":"2019-01-03T01:00:00Z",
},
Я хотел бы получить в результате запроса совпадающих пользователей по часам дня, без указания дня, месяца или года.
Ожидаемый результат запроса, как показано ниже:
"00:00:00Z",2
"user1",
"user2"
"01:00:00Z",2
"user1",
"user3"
Я пытался использовать «facet.range and facet.range.gap», но я не уверен, что это актуально для моего варианта использования, так как в нем отсутствует пользователь «group by» и по часам.
Вот что я попробовал:
select?q=*:*&facet=true&facet.range=date&facet.range.start=NOW/DAY-5YEARS&facet.range.end=NOW/DAY&facet.range.gap=%2B1HOUR
Что дает мне вывод, как показано ниже (1 строка в час в течение 5 лет):
"facet_counts":{
"facet_queries":{},
"facet_fields":{},
"facet_ranges":{
"date":{
"counts":[
"2014-03-07T00:00:00Z",432,
"2014-03-07T01:00:00Z",832,
"2014-03-07T02:00:00Z",334,
"2014-03-07T03:00:00Z",213,
"2014-03-07T04:00:00Z",614,
...
Мне страшно, что в моей схеме отсутствует поле для хранения только часов, чтобы можно было вычислять фасеты по часам. Но даже тогда я не смог бы сгруппировать по часам и пользователю.
Мой вопрос: как я могу получить ожидаемый результат запроса выше?