Коллекции Solr

В терминологии Solr Коллекция (Collection) — это совокупность проиндексированных документов. Каждая коллекция имеет свой набор настроек и схем, которые могут разниться от коллекции к коллекции. Также Solr-коллекцией называют группу шардов/ядер, которые в совокупности формируют единый логический индекс. Solr разделяет данные на шарды, распределяет шарды между серверами (в зависимости от количества шардов на один узел) и обеспечивает репликацию шардов для надежности, используя фактор репликации (replication factor), установленный на уровне ядра. Рисунок ниже отображает данную концепцию.

solrLogic dark
Коллекции Solr в кластере
solrLogic light
Коллекции Solr в кластере

Создание коллекции через web-интерфейс

  1. Откройте ваш браузер и перейдите на URL веб-интерфейса Solr. Вы можете увидеть данный URL на странице ADCM.

    solr install 6
    Страница Solr в ADCM

    Вкладка Collections содержит список существующих коллекций в кластере. Кликнув на имя коллекции, можно увидеть основные метаданные коллекции — ее параметры, текущие шарды и реплики; также вы можете добавить или удалить отдельные реплики.

    С помощью кнопок вверху страницы, вы можете управлять коллекциями в кластере, например, добавлять новые коллекции и алиасы, перезагружать или удалять отдельные коллекции и так далее.

    Чтобы создать новую коллекцию, кликните Add Collection.

    solr add collection 1 dark
    Web-интерфейс Solr
    solr add collection 1 light
    Web-интерфейс Solr
  2. В появившейся панели укажите параметры коллекции:

    • name. Имя коллекции. Этот параметр обязателен. При выборе имени придерживайтесь следующих правил:

      • Используйте только ASCII буквенно-цифровые символы (A-Za-z0-9), дефис (-), или нижнее подчеркивание (_).

      • Не используйте строки "shard" и "replica".

    • config set. Конфигурация для создаваемой коллекции. Вы можете выбрать _default или найти нужную конфигурацию, используя поиск.

    • config set. Количество шардов, которые могут быть созданы в коллекции. Этот параметр является обязательным, если для поля router выбрано значение Composite ID.

    • replicationFactor. Количество реплик, создаваемых на каждый шард. Параметр опциональный.

      РЕКОМЕНДАЦИЯ
      Значение по умолчанию — 1. Максимальное значение должно соответствовать количеству запущенных узлов Solr сервера.
      solr add collection 2 dark
      Создание новой коллекции
      solr add collection 2 light
      Создание новой коллекции
  3. (Опционально) Кликните 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.

  4. После установки всех параметров, кликните Add Collection, чтобы создать новую коллекцию.

solr add collection 3 dark
Новая коллекция
solr add collection 3 light
Новая коллекция

Создание коллекции через 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"}]}]}
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней