Одно решение проблема заключается в использовании «неявного маршрутизатора» при создании вашей коллекции.
Solr действительно поддерживает возможность добавления новых осколков (или DELETE существующих осколков) к вашему индексу (когда захотите) через конфигурацию «неявного маршрутизатора» (CREATE COLLECTION API).
Скажем, вы должны индексировать все данные «Audit Trail» вашего приложения в Solr. Новые данные добавляются каждый день. Возможно, вы, скорее всего, захотите очертить год.
Вы могли бы сделать что-то вроде ниже при первоначальной настройке вашей коллекции:
admin/collections?
action=CREATE&
name=AuditTrailIndex&
router.name=implicit&
shards=2010,2011,2012,2013,2014&
router.field=year
Вышеуказанная команда: а) Создает 5 черепки - по одному за текущий и последние 4 года 2010,2011 , 2012,2013,2014 b) Направляет данные на правильный осколок в зависимости от значения поля «год» (указано как router.field)
В декабре 2014 года вы можете добавить новый осколок при подготовке к 2015 году используя API CREATESHARD (часть API коллекций) - Сделайте что-то вроде:
/admin/collections?
action=CREATESHARD&
shard=2015&
collection=AuditTrailIndex
Указанная выше команда создает новый осколок в той же коллекции.
Когда в 2015 году все данные будут автоматически проиндексированы в осколок «2015», если ваши данные имеют поле «год», правильно заполненное до 2015 года.
В 2015 году, если вы думаете, что вам не нужно осколок 2010 (в зависимости от ваших требований хранения данных) - вы всегда можете использовать DELETESHARD API, чтобы сделать так:
/admin/collections?
action=DELETESHARD&
shard=2015&
collection=AuditTrailIndex
P.S. Это решение работает, только если вы использовали «неявный роутер» при создании своей коллекции. НЕ работает, когда вы используете стандартный «составной маршрутизатор» - то есть коллекции, созданные с помощью параметра numshards.
Эта функция поистине является игровым мастером - позволяет добавлять черепах динамически на основе растущих потребностей вашего бизнеса.
Эта функция доступна в Elastic Search. Если нет, я уверен, что они успеют.
Теперь это исправлено :) –