Коллекции Solr
В терминологии Solr Коллекция (Collection) — это совокупность проиндексированных документов. Каждая коллекция имеет свой набор настроек и схем, которые могут разниться от коллекции к коллекции. Также Solr-коллекцией называют группу шардов/ядер, которые в совокупности формируют единый логический индекс. Solr разделяет данные на шарды, распределяет шарды между серверами (в зависимости от количества шардов на один узел) и обеспечивает репликацию шардов для надежности, используя фактор репликации (replication factor), установленный на уровне ядра. Рисунок ниже отображает данную концепцию.
Создание коллекции через web-интерфейс
-
Откройте ваш браузер и перейдите на URL веб-интерфейса Solr. Вы можете увидеть данный URL на странице ADCM.
Страница Solr в ADCMВкладка Collections содержит список существующих коллекций в кластере. Кликнув на имя коллекции, можно увидеть основные метаданные коллекции — ее параметры, текущие шарды и реплики; также вы можете добавить или удалить отдельные реплики.
С помощью кнопок вверху страницы, вы можете управлять коллекциями в кластере, например, добавлять новые коллекции и алиасы, перезагружать или удалять отдельные коллекции и так далее.
Чтобы создать новую коллекцию, кликните Add Collection.
Web-интерфейс SolrWeb-интерфейс Solr -
В появившейся панели укажите параметры коллекции:
-
name. Имя коллекции. Этот параметр обязателен. При выборе имени придерживайтесь следующих правил:
-
Используйте только ASCII буквенно-цифровые символы (
A-Za-z0-9
), дефис (-
), или нижнее подчеркивание (_
). -
Не используйте строки "shard" и "replica".
-
-
config set. Конфигурация для создаваемой коллекции. Вы можете выбрать
_default
или найти нужную конфигурацию, используя поиск. -
config set. Количество шардов, которые могут быть созданы в коллекции. Этот параметр является обязательным, если для поля
router
выбрано значениеComposite ID
. -
replicationFactor. Количество реплик, создаваемых на каждый шард. Параметр опциональный.
РЕКОМЕНДАЦИЯЗначение по умолчанию —1
. Максимальное значение должно соответствовать количеству запущенных узлов Solr сервера.Создание новой коллекцииСоздание новой коллекции
-
-
(Опционально) Кликните Show advanced, чтобы увидеть дополнительные настройки:
-
router. Используемый роутер (router). Роутер определяет распределение документов по шардам. Доступные значения:
Composite ID
илиImplicit
. Параметрshards
является обязательным, если используется роутерImplicit
. При использовании роутера типаComposite ID
обязателен параметрnumShards
.-
Implicit. Документы не отправляются автоматически в другие шарды. Все документы отправляются в тот шард, который был указан в запросе на индексацию (или внутри каждого документа).
-
Composite ID. Данный роутер хэширует значение поля
uniqueKey
. Затем находит данный хэш в кластере и определяет, в какой шард должен отправиться документ; такой роутер дает дополнительную возможность управлять роутингом вручную.
-
-
maxShardsPerNode. При создании коллекции, шарды и/или реплики распределяются по всем живым (live) узлам, так что две реплики одного шарда не могут находиться на одном узле. Если узел недоступен при вызове команды
CREATE
, такой узел не получит ни одной части новой коллекции, и это приводит к слишком большому количеству реплик на одном живом узле. Параметр maxShardsPerNode устанавливает предел на количество реплик, распределяемых командойCREATE
на каждый узел. Если коллекция целиком не помещается на живых узлах, коллекция не будет создана. Значение по умолчанию:1
. -
shards. Список имен шардов, разделенных запятой (например,
shard-x,shard-y,shard-z
). Этот параметр является обязательным при использовании роутера типаImplicit
. -
router.field. Если этот параметр задан, то для того, чтобы определить, в какой шард направлять документ, роутер будет использовать кастомное поле для вычисления хеша вместо поля
uniqueKey
. Если значение указанного поляnull
, такой документ не будет обработан. -
autoAddReplicas. Позволяет автоматически добавлять реплики на общих файловых системах, если параметр равен
true
. Значение по умолчанию:false
.
-
-
После установки всех параметров, кликните Add Collection, чтобы создать новую коллекцию.


Создание коллекции через CLI
Данный раздел описывает базовые операции над коллекциями с использованием интерфейса командной строки (CLI).
Все операции над Solr-коллекциями вызываются скриптом /usr/lib/solr/bin/solr или утилитой solrctl
.
ПРИМЕЧАНИЕ
Все примеры в данном разделе подразумевают отсутствие Kerberos в кластере.
|
Создание коллекции
Для создания новой коллекции доступны следующие команды:
$ /usr/lib/solr/bin/solr create -c <collection_name> -s <shards_num> -rf <replicas_num>
# или
$ solrctl collection --create <collection_name> -s <shards_num> -c <config_set>
Где:
-
<collection_name> — буквенно-цифровое имя коллекции;
-
<shards_num> — количество шардов (shards), на которое будет разбиты коллекция;
-
<replicas_num> — количество реплик каждого документа в коллекции.
Пример:
$ /usr/lib/solr/bin/solr create -c Collection0 -s 2 -rf 2
Получение списка коллекций
Для вывода списка доступных коллекций используйте следующую команду:
$ solrctl collection --list
Вывод команды имеет следующий вид:
Collection0 (5) demoCollection_1 (5) ...
Удаление коллекции
Для удаления коллекции доступны следующие команды:
$ /usr/lib/solr/bin/solr delete -c <collection_name>
# или
$ solrctl collection --delete <collection_name>
Вывод команды имеет следующий вид:
{ "responseHeader":{ "status":0, "QTime":236}, "success":{ "ka-adh-3.ru-central1.internal:8983_solr":{"responseHeader":{ "status":0, "QTime":26}}, "ka-adh-1.ru-central1.internal:8983_solr":{"responseHeader":{ "status":0, "QTime":26}}, "ka-adh-2.ru-central1.internal:8983_solr":{"responseHeader":{ "status":0, "QTime":42}}}} Deleted collection 'collection1' using command: http://ka-adh-1.ru-central1.internal:8983/solr/admin/collections?action=DELETE&name=collection1
Проверка состояния коллекции
Для проверки состояния (health check) определенной коллекции и получения диагностической информации используйте команду:
$ /usr/lib/solr/bin/solr healthcheck -c <collection_name>
Пример:
$ /usr/lib/solr/bin/solr healthcheck -c Collection0
Вывод команды имеет следующий вид:
{ "collection":"Collection0", "status":"healthy", "numDocs":0, "numShards":2, "shards":[ { "shard":"shard1", "status":"healthy", "replicas":[ { "name":"core_node3", "url":"http://ka-adh-2.ru-central1.internal:8983/solr/Collection0_shard1_replica_n1/", "numDocs":0, "status":"active", "uptime":"2 days, 22 hours, 21 minutes, 49 seconds", "memory":"158.9 MB (%32.8) of 485 MB"}, { "name":"core_node5", "url":"http://ka-adh-1.ru-central1.internal:8983/solr/Collection0_shard1_replica_n2/", "numDocs":0, "status":"active", "uptime":"2 days, 22 hours, 21 minutes, 49 seconds", "memory":"240.4 MB (%49.9) of 481.5 MB", "leader":true}]}, { "shard":"shard2", "status":"healthy", "replicas":[ { "name":"core_node7", "url":"http://ka-adh-3.ru-central1.internal:8983/solr/Collection0_shard2_replica_n4/", "numDocs":0, "status":"active", "uptime":"2 days, 22 hours, 21 minutes, 49 seconds", "memory":"196 MB (%40) of 489.5 MB", "leader":true}, { "name":"core_node8", "url":"http://ka-adh-2.ru-central1.internal:8983/solr/Collection0_shard2_replica_n6/", "numDocs":0, "status":"active", "uptime":"2 days, 22 hours, 21 minutes, 49 seconds", "memory":"160.8 MB (%33.2) of 485 MB"}]}]}