У меня есть примерно 50 миллионов документов, 90 (сохраненных (20) + несохраненных (70)) полей в schema.xml, проиндексированных в одном ядре. Запросы довольно сложны, наряду с огранкой и выделением. Из этих 90 полей есть 3-4 поля (все сохранены), которые очень часто загружаются. Теперь обновление этих полей обычно требует повторного заполнения всех полей, что является сложной задачей. Если я использую атомарное/частичное обновление, нам нужно снова обновить несохраненные поля.
Наше решение. Чтобы преодолеть описанные выше проблемы, мы решили использовать запросы SolrCloud и Join. Мы разделяем индекс на два отдельных индекса/коллекции, т.е. один для сохраненных полей и один для несохраненных полей. Отношение ч/б документов является идентификатором документа. Мы сохранили часто обновляемые поля в сохраненном файле index. Сделав это, мы смогли использовать атомарные обновления. Кроме того, чтобы преодолеть ограничение запросов на соединение в облаке, мы разделили и реплицировали сохраненные поля на все узлы, но несохраненные поля не были разделены, а реплицированы на все узлы. У нас есть кластер из 5 узлов с дополнительными 3 экземплярами zookeeper. Учитывая количество документов, единственная проблема заключается в том, что запросы на соединение в конечном итоге снизят производительность поиска? Если да, то какие еще варианты я могу рассмотреть.
stored
будет извлечена из docValues, если вам нужно фактическое значение (поскольку Lucene может использовать docValues в качестве сохраненного значения). Требование существует, поскольку обновления на месте не могут обновлять сохраненные данные в старой структуре. - person MatsLindh   schedule 12.01.2018