У меня есть несколько документов solr в следующей форме
{ requests : [23], timestamp : [1562146437780] }
я должен получить сумму запросов в интервалах метки времени.
Я пытался использовать фасеты, но не мог понять, как использовать их в двух полях.
я попробовал это. но давал мне количество документов в интервале отметок времени.
query.addNumericRangeFacet(TIMESTAMP, startTime, endTime, gap);
заранее спасибо
от 'startTime' до 'endTime' с интервалом 'gap'




Вы можете реализовать это, используя API фасетов JSON для фасетов диапазона. Это позволит вам предоставить дополнительный аспект, который работает с доменом (т. е. документы в корзине) из аспекта выше.
Вы начинаете с создания фасета диапазона:
RangeFacetMap rangeFacet = new RangeFacetMap(TIMESTAMP, startTime, endTime, gap);
Затем вы добавляете подфасет, который вызывает сумму:
rangeFacet.withStatSubFacet("requests_sum", "sum(requests)")
Вы отправляете этот запрос в Solr, используя:
final JsonQueryRequest request = new JsonQueryRequest()
.setQuery("*:*")
.withFacet("timestamps", rangeFacet);
QueryResponse queryResponse = request.process(solrClient, COLLECTION_NAME);
У меня нет экземпляра или документов для тестирования прямо сейчас, но он построен на основе информации в разделе Пример фасета Нестера в справочном руководстве.
Могу ли я использовать SolrQuery и сделать тот же запрос?
Получение исключения org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrEисключение: ошибка сервера в локальный: 8983/solr/запросы: невозможно использовать FieldCache для многозначного поля: запросы
Да, вам придется сделать это поле однозначным. Используете ли вы его многозначным образом? Судя по твоему посту выше, этого не видно.
это будет многозначное поле
Проиндексируйте сумму значений поля в одно поле, а затем используйте его для суммирования запросов.
Вы хотите сгенерировать сумму для нескольких диапазонов или только для одного определенного диапазона, указанного как
startTime,endTime?