В моем индексе Solr у меня есть необязательное поле даты.Давайте назовем это Property_3_1044
.
Я хочу найти максимум и минимум из Property_3_1044
, а также количество всех элементов безэта дата .
Я считаю, что огранка - лучший подход.Пожалуйста, исправьте меня, если есть лучший способ!
Использование Фасет запроса Я могу использовать агрегатные функции min
и max
для получения минимума и максимума соответственно:
http://localhost:8983/solr/Shard/query?q=:&json.facet={Date1:{type:query,facet:{"min":"min(Property_3_1044)","max":"max(Property_3_1044)"}}}&rows=0
Результат:
"facets":{
"count":249,
"Date1":{
"count":249,
"min":"2019-01-09T00:00:00Z",
"max":"2019-01-22T00:00:00Z"}}}
(Вопрос в стороне: как избавиться от 2 count
с?)
Использование Терминов-граней Я могу использовать параметр missing
, чтобы найти все элементы без даты :
http://localhost:8983/solr/Shard/query?q=:&rows=0&json.facet={Date2:{terms:{field:Property_3_1044,missing:true,limit:0}}}
Результат:
"facets":{
"count":249,
"Date2":{
"buckets":[],
"missing":{
"count":240}}}}
Как мне объединить эти два запроса?Я знаю, что могу просто выполнить оба (просто объединяя строки двух запросов), но я хотел бы знать, есть ли более эффективный способ.Я предполагаю, что выполнение как фасета запроса, так и фасета терминов обходится дороже, чем просто использование одного фасета.Например, агрегатная функция missing
позволила бы мне делать все, просто используя фасет запроса (но такого метода нет, не так ли?).