Как мы используем Solr: Мы храним документы 7K с атрибутами 3k, прикрепленными к одному документу в solr. Каждый атрибут индексируется на solr, чтобы включить поиск/сортировку по этому атрибуту. Мы извлекаем данные из solr на основе критериев поиска/фильтра с атрибутом 400+, прикрепленным к одному документу. Поэтому, когда мы пытаемся найти какой-либо текст в solr с 1 атрибутом (путем установки fl = "projectId"), для отображения результата на solr-консоли требуется едва ли 1 секунда, что отлично.Как улучшить производительность Solr?
Однако, если мы попытаемся получить атрибут 100+ для тех же критериев поиска (который вернет строку ~ 100 * 3 * нет совпадающего документа (~ 50) из документа 7K с атрибутом 4K), это займет ~ 20 секунд. Но нам нужно получить атрибут 400+ с согласованным документом, он занимает много времени ~ 90 секунд, раньше он сбой из-за outOfMemoryError, который мы исправили, увеличив размер ОЗУ и размер кучи JVM.
синхронизация данных Mysql с Solr: В настоящее время мы используем MySql БД в качестве первичной базы данных и сервера Solr в качестве вторичной базы данных. Мы ежедневно синхронизировали данные mysql с сервером Solr. Мы также обновляем сервер solr всякий раз, когда мы обновляем любой атрибут в Mysql DB.
Использование данных результата solr в приложении: Панель инструментов приложения будет содержать документ с предварительно сконфигурированными столбцами (атрибутами) пользователя. Пользователь может применять критерии поиска/фильтра, чтобы заполнить требуемый результат на своей приборной панели. Поэтому наше приложение пытается получить данные с критериями поиска/фильтрации с сервера solr, обратившись к нему.
Мы пробовали много вещей, таких как увеличение размера кучи, размер оперативной памяти и отсутствие процессора, но не повезло. Данные с каждым днем растут, что вызывает множество проблем. Он работает с небольшим количеством проектов или небольшим атрибутом, но всякий раз, когда мы пытаемся извлечь больше атрибута, это требует слишком много времени, когда-то он разбился.
Я не уверен, правильно ли мы используем индексы?
Может ли кто-нибудь предложить лучший/альтернативный подход? Спасибо заранее.
Сколько данных мы фактически говорим об этом, прикрепленном к каждому документу? Если каждый документ имеет размер МБ, вам придется переносить большие объемы данных при получении списка документов. – MatsLindh
каждый документ содержит ~ 1MB – ManojP
Сколько документов вы возвращаете?вы оценили сохранение сериализованной версии документа в кеше и возвращение, вместо того, чтобы получать фактические данные из Solr или MySQL? – MatsLindh