Как вычислить сумму значений для поля, используя интервалы разных полей в solr?

У меня есть несколько документов solr в следующей форме

{ requests : [23], timestamp : [1562146437780] }

я должен получить сумму запросов в интервалах метки времени.

Я пытался использовать фасеты, но не мог понять, как использовать их в двух полях.

я попробовал это. но давал мне количество документов в интервале отметок времени.

 query.addNumericRangeFacet(TIMESTAMP, startTime, endTime, gap);

заранее спасибо

Вы хотите сгенерировать сумму для нескольких диапазонов или только для одного определенного диапазона, указанного как startTime, endTime?

MatsLindh 03.07.2019 15:10

от 'startTime' до 'endTime' с интервалом 'gap'

The Dude 03.07.2019 15:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
236
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете реализовать это, используя 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 и сделать тот же запрос?

The Dude 03.07.2019 16:04

Получение исключения org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrE‌​исключение: ошибка сервера в локальный: 8983/solr/запросы: невозможно использовать FieldCache для многозначного поля: запросы

The Dude 03.07.2019 16:31

Да, вам придется сделать это поле однозначным. Используете ли вы его многозначным образом? Судя по твоему посту выше, этого не видно.

MatsLindh 03.07.2019 17:01

это будет многозначное поле

The Dude 03.07.2019 17:03

Проиндексируйте сумму значений поля в одно поле, а затем используйте его для суммирования запросов.

MatsLindh 03.07.2019 18:32

Другие вопросы по теме