Подключение к Solr через CLI

Компоненты Solr Server, установленные на хостах ADH, предоставляют скрипт /usr/lib/solr/bin/solr, который позволяет управлять Solr-кластером из командной строки. Несмотря на то, что всегда рекомендуется использовать ADCM для управления Solr-кластером, некоторые CLI-команды Solr могут быть полезны для выполнения действий, недоступных в веб-интерфейсе Solr. Примеры этих команд описаны далее в статье.

Использование скрипта /usr/lib/solr/bin/solr показано ниже:

$ /usr/lib/solr/bin/solr <COMMAND> [<PARAMETERS>]

Подробная информация о всех поддерживаемых значениях COMMAND и PARAMETERS доступна в документации Solr. Для получения справочной информации по конкретной команде используйте синтаксис:

$ /usr/lib/solr/bin/solr <COMMAND> -help

Для более подробного вывода используйте флаг -V.

ПРИМЕЧАНИЕ
Являясь сервисом ADH, Solr всегда запускается в режиме SolrCloud. Поэтому некоторые команды, относящиеся к standalone-режиму, могут не иметь никакого эффекта.

Команды управления: start, stop, restart

Несмотря на то, что скрипт /usr/lib/solr/bin/solr поддерживает команды типа start, stop и restart, настоятельно рекомендуется использовать ADCM для выполнения этих действий. Под капотом ADCM вызывает эти же команды для запуска и остановки Solr-процессов, однако ADCM осуществляет дополнительные манипуляции для корректного выполнения этих команд. Например, установка переменных окружения, запуск команд от имени пользователя с достаточными правами доступа, обработка ошибок и так далее.

Выполнение команд start, stop и restart с помощью /usr/lib/solr/bin/solr может привести к проблемам с запуском Solr и сбоям в работе всего Solr-кластера.

Команды вывода системной информации

Solr предоставляет несколько команд, которые могут быть полезны для получения диагностической информации о состоянии вашего Solr-кластера. Некоторые из этих команд представлены ниже:

$ /usr/lib/solr/bin/solr version
$ /usr/lib/solr/bin/solr status
$ /usr/lib/solr/bin/solr healthcheck [<PARAMETERS>]

Параметры команд

Команда: healthcheck
Параметр Описание

-c <collection_name>

Имя коллекции

-z <zk_connection_string>

Опциональный параметр. Строка подключения ZooKeeper. Можно не указывать, если строка подключения к ZooKeeper не изменялась вручную

Примеры

Вывод версии Solr
$ /usr/lib/solr/bin/solr version

Пример вывода:

8.11.2
Получение статуса узла Solr
$ /usr/lib/solr/bin/solr status

Пример вывода:

Found 1 Solr nodes:

Solr process 23658 running on port 8983
{
  "solr_home":"/srv/solr/server",
  "version":"8.11.2 3cb85f40e394dcfb50fe77310908cce385381ba2 - jenkins - 2024-03-20 17:52:09",
  "startTime":"2024-05-23T22:52:07.271Z",
  "uptime":"0 days, 0 hours, 0 minutes, 6 seconds",
  "memory":"105.9 MB (%21.6) of 491 MB",
  "cloud":{
    "ZooKeeper":"ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/Arenadata.Hadoop-7.solr.server",
    "liveNodes":"3",
    "collections":"0"}}
Проверка состояния коллекции
$ /usr/lib/solr/bin/solr healthcheck -c test_collection

Пример вывода:

{
  "collection":"test_collection",
  "status":"healthy",
  "numDocs":0,
  "numShards":2,
  "shards":[
    {
      "shard":"shard1",
      "status":"healthy",
      "replicas":[
        {
          "name":"core_node3",
          "url":"http://ka-adh-3.ru-central1.internal:8983/solr/test_collection_shard1_replica_n1/",
          "numDocs":0,
          "status":"active",
          "uptime":"0 days, 11 hours, 21 minutes, 7 seconds",
          "memory":"143.6 MB (%29.4) of 489 MB"},
        {
          "name":"core_node5",
          "url":"http://ka-adh-1.ru-central1.internal:8983/solr/test_collection_shard1_replica_n2/",
          "numDocs":0,
          "status":"active",
          "uptime":"0 days, 11 hours, 21 minutes, 7 seconds",
          "memory":"67.9 MB (%14) of 485 MB",
          "leader":true},
        {
          "name":"core_node7",
          "url":"http://ka-adh-2.ru-central1.internal:8983/solr/test_collection_shard1_replica_n4/",
          "numDocs":0,
          "status":"active",
          "uptime":"0 days, 11 hours, 21 minutes, 7 seconds",
          "memory":"63 MB (%13) of 485 MB"}]},
    {
      "shard":"shard2",
      "status":"healthy",
      "replicas":[
        {
          "name":"core_node9",
          "url":"http://ka-adh-3.ru-central1.internal:8983/solr/test_collection_shard2_replica_n6/",
          "numDocs":0,
          "status":"active",
          "uptime":"0 days, 11 hours, 21 minutes, 7 seconds",
          "memory":"144.8 MB (%29.6) of 489 MB"},
        {
          "name":"core_node11",
          "url":"http://ka-adh-1.ru-central1.internal:8983/solr/test_collection_shard2_replica_n8/",
          "numDocs":0,
          "status":"active",
          "uptime":"0 days, 11 hours, 21 minutes, 7 seconds",
          "memory":"69.3 MB (%14.3) of 485 MB"},
        {
          "name":"core_node12",
          "url":"http://ka-adh-2.ru-central1.internal:8983/solr/test_collection_shard2_replica_n10/",
          "numDocs":0,
          "status":"active",
          "uptime":"0 days, 11 hours, 21 minutes, 7 seconds",
          "memory":"65.1 MB (%13.4) of 485 MB",
          "leader":true}]}]}

Команды управления коллекциями и ядрами

Вы можете использовать скрипт /usr/lib/solr/bin/solr для создания и удаления Solr-коллекций.

Использование команд показано ниже:

$ /usr/lib/solr/bin/solr create [<PARAMETERS>]
$ /usr/lib/solr/bin/solr create_collection [<PARAMETERS>]
$ /usr/lib/solr/bin/solr delete [<PARAMETERS>]
ПРИМЕЧАНИЕ
В ADH-кластере команды create и create_collection эквивалентны. При запуске create определяется текущий режим Solr (в ADH это всегда SolrCloud) и вызывается команда create_collection с тем же набором параметров.

Параметры команд

Команды: create/create_collection
Параметр Описание

-c <collection>

Имя создаваемой коллекции

-d <conf_dir>

Указывает директорию конфигурации (configset) для создания коллекции. Если параметр не указан, используется конфигсет /usr/lib/solr/server/solr/configsets/_default

-n <config_name>

Имя, используемое для загрузки конфигсета в ZooKeeper. По умолчанию используется имя коллекции

-s <shards>, -shards <shards>

Количество шардов для разбиения коллекции. Значение по умолчанию — 1

-rf <replicas>, -replicationFactor <replicas>

Количество реплик каждого документа в коллекции. Значение по умолчанию — 1, указывающее на отсутствие репликации

Команда: delete
Параметр Описание

-c <collection>

Имя удаляемой коллекции

-deleteConfig <true|false>

Указывает, удалять ли директорию конфигурации из ZooKeeper. По умолчанию используется значение true. Если директория конфигурации ZooKeeper уже используется другой коллекцией, она не будет удалена, даже если указать -deleteConfig true

Примеры

Создание базовой коллекции
$ /usr/lib/solr/bin/solr create_collection -c test_collection1

Пример вывода:

Created collection 'test_collection1' with 1 shard(s), 1 replica(s) with config-set 'test_collection1'
Создание коллекции с несколькими шардами и репликами
$ /usr/lib/solr/bin/solr create_collection -c test_collection -shards 2 -replicationFactor 3 -V

Пример вывода:

Connecting to ZooKeeper at ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/Arenadata.Hadoop-8.solr.server ...
INFO  - 2024-05-28 08:23:31.128; org.apache.solr.common.cloud.ConnectionManager; Waiting for client to connect to ZooKeeper
INFO  - 2024-05-28 08:23:31.145; org.apache.solr.common.cloud.ConnectionManager; zkClient has connected
INFO  - 2024-05-28 08:23:31.145; org.apache.solr.common.cloud.ConnectionManager; Client is connected to ZooKeeper
INFO  - 2024-05-28 08:23:31.158; org.apache.solr.common.cloud.ZkStateReader; Updated live nodes from ZooKeeper... (0) -> (3)
INFO  - 2024-05-28 08:23:31.269; org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; Cluster at ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/Arenadata.Hadoop-8.solr.server ready
Uploading /usr/lib/solr/server/solr/configsets/_default/conf for config test_collection to ZooKeeper at ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/Arenadata.Hadoop-8.solr.server

Creating new collection 'test_collection' using command:
http://ka-adh-1.ru-central1.internal:8983/solr/admin/collections?action=CREATE&name=test_collection&numShards=2&replicationFactor=3&maxShardsPerNode=-1&collection.configName=test_collection

{
  "responseHeader":{
    "status":0,
    "QTime":2325},
  "success":{
    "ka-adh-1.ru-central1.internal:8983_solr":{
      "responseHeader":{
        "status":0,
        "QTime":1199},
      "core":"test_collection_shard2_replica_n8"},
    "ka-adh-3.ru-central1.internal:8983_solr":{
      "responseHeader":{
        "status":0,
        "QTime":1610},
      "core":"test_collection_shard1_replica_n1"},
    "ka-adh-2.ru-central1.internal:8983_solr":{
      "responseHeader":{
        "status":0,
        "QTime":1822},
      "core":"test_collection_shard2_replica_n10"}}}
Удаление коллекции
$ /usr/lib/solr/bin/solr delete -c test_collection1

Пример вывода:

{
  "responseHeader":{
    "status":0,
    "QTime":297},
  "success":{
    "ka-adh-1.ru-central1.internal:8983_solr":{"responseHeader":{
        "status":0,
        "QTime":50}},
    "ka-adh-3.ru-central1.internal:8983_solr":{"responseHeader":{
        "status":0,
        "QTime":119}},
    "ka-adh-2.ru-central1.internal:8983_solr":{"responseHeader":{
        "status":0,
        "QTime":130}}}}


Deleted collection 'test_collection1' using command:
http://ka-adh-1.ru-central1.internal:8983/solr/admin/collections?action=DELETE&name=test_collection1

Ядра

Поскольку компоненты Solr Server всегда запускаются в режиме SolrCloud, в этом режиме Solr оперирует коллекциями (поисковый индекс, распределенный по нескольким узлам кластера), а не ядрами. По этой причине команды, связанные с ядрами, не имеют эффекта, а их описание выходит за рамки данной статьи.

Аутентификация

С помощью /usr/lib/solr/bin/solr можно настраивать аутентификацию в Solr. Использование соответствующих команд показано ниже:

$ /usr/lib/solr/bin/solr auth enable [<PARAMETERS>]
$ /usr/lib/solr/bin/solr auth disable

Параметры команд

Команда: auth enable
Параметр Описание

-authConfDir <dir>

Указывает директорию для хранения файлов конфигурации, связанных с аутентификацией

-blockUnknown <true|false>

Блокирует доступ ко всем Solr-эндпойнтам для неаутентифицированных пользователей

-credentials <username:password>

Учетные данные в формате username:password

-prompt <true|false>

Запрашивает ввод учетных данных. Необходимо указать либо параметр -prompt, либо -credentials

-type <type>

Указывает механизм аутентификации (basicAuth или kerberos). По умолчанию используется basicAuth

-updateIncludeFileOnly <true|false>

Обновляет только файл solr.in.sh, не включая/отключая аутентификацию

-z <zkString>

Строка подключения к ZooKeeper. Можно не указывать, если строка подключения к ZooKeeper не изменялась вручную

-d <dir>

Указывает директорию сервера Solr (по умолчанию /usr/lib/solr/server/). Используйте этот параметр, только если вы изменяли путь к домашней директории Solr

-s <dir>

Указывает домашнюю директорию Solr для хранения учетных данных и файлов конфигурации аутентификации (например, basicAuth.conf)

Примеры

Включение basic-аутентификации

 
Перед выполнением следующей команды убедитесь, что файл security.json загружен в ZooKeeper. Загрузить файл можно с помощью ZooKeeper CLI или с помощью скрипта /usr/lib/solr/server/scripts/cloud-scripts/zkcli.sh.

$ /usr/lib/solr/bin/solr auth enable \
    -type basicAuth \
    -prompt true \
    -z ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/Arenadata.Hadoop-6.solr.server \
    -blockUnknown true

Пример вывода:

Security is enabled. You can disable it with 'bin/solr auth disable'. Existing security.json:
{"authentication":{"blockUnknown":true,"class":"solr.BasicAuthPlugin","realm":"My Solr users","forwardCredentials":false},"authorization":{"class":"solr.RuleBasedAuthorizationPlugin","permissions":[{"name":"security-edit","role":"admin"}],"user-role":{"solr":"admin"}}}
Отключение аутентификации
$ /usr/lib/solr/bin/solr auth disable

Пример вывода:

Security has been disabled.
Please remove any SOLR_AUTH_TYPE or SOLR_AUTHENTICATION_OPTS configuration from solr.in.sh/solr.in.cmd.

Команды ZooKeeper

Скрипт /usr/lib/solr/bin/solr поддерживает команды для взаимодействия с ZooKeeper. Например, команды zk upconfig и zk downconfig используются для загрузки/выгрузки конфигсетов Solr из ZooKeeper. Команды используются следующим образом:

$ /usr/lib/solr/bin/solr zk upconfig [<PARAMETERS>]
$ /usr/lib/solr/bin/solr zk downconfig [<PARAMETERS>]

Параметры команд

Команды: zk upconfig/zk downconfig
Параметр Описание

-n <name>

Имя конфигсета, который должен быть загружен или выгружен из ZooKeeper. Все загруженные конфигсеты доступны в веб-интерфейсе Solr. Указание уже существующего имени перезаписывает конфигсет в ZooKeeper

-d <configset_dir>

Путь к директории конфигсета для загрузки/выгрузки. Директория конфигсета должна содержать поддиректорию conf с файлом solrconfig.xml внутри

-z <zk_host>

Опциональная строка подключения к ZooKeeper. Можно не указывать, если строка подключения к ZooKeeper не изменялась вручную

ПРИМЕЧАНИЕ
Загрузка конфигсета в ZooKeeper не обновляет коллекции автоматически. При обновлении конфигсета, который уже используется коллекцией, необходимо выполнить команду RELOAD для перезагрузки всех коллекций, использующих данный конфигсет.

Также существует несколько команд zk …​, которые могут быть полезны для взаимодействия с ZooKeeper. Использование некоторых из них показано ниже:

$ /usr/lib/solr/bin/solr zk cp <src> <dest> [-r] [-z <zk_string>] (1)
$ /usr/lib/solr/bin/solr zk rm <path> [-r] [-z <zk_string>] (2)
$ /usr/lib/solr/bin/solr zk mv <src> <dst> [-z <zk_string>] (3)
$ /usr/lib/solr/bin/solr zk ls <path> [-r] [-z <zk_string>] (4)
$ /usr/lib/solr/bin/solr zk mkroot <path> [-z <zk_string>] (5)
1 Перенос данных между локальной файловой системой и ZooKeeper Znodes. Использование префикса zk: указывает на ZooKeeper-локацию, а file: указывает на локальную файловую систему. Одно из значений <src> или <dest> должно иметь префикс zk:.
2 Удаление Znode из ZooKeeper. Поскольку <path> относится к ZooKeeper, указание префикса zk: не требуется.
3 Перемещение (переименование) Znode.
4 Вывод дочерних элементов Znode.
5 Создание новой Znode. Промежуточные Znodes создаются при необходимости.

Примеры

Загрузка конфигсета из ZooKepper
$ /usr/lib/solr/bin/solr zk downconfig -n test_collection -d ~/my_test_collection_config

Пример вывода:

Downloading configset test_collection from ZooKeeper at ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/Arenadata.Hadoop-8.solr.server to directory /home/admin/my_test_collection_config/conf
Загрузка директории в ZooKeeper
$ /usr/lib/solr/bin/solr zk cp -r file:/home/admin/test_dir/ zk:/Arenadata.Hadoop-8.solr.server/test_upload

Пример вывода:

Copying from 'file:/home/admin/test_dir/' to 'zk:/Arenadata.Hadoop-8.solr.server/test_upload'. ZooKeeper at ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/Arenadata.Hadoop-8.solr.server
Удаление Znode с дочерними элементами
$ /usr/lib/solr/bin/solr zk rm -r zk:/Arenadata.Hadoop-8.solr.server/test_upload

Пример вывода:

Removing ZooKeeper node /Arenadata.Hadoop-8.solr.server/test_upload from ZooKeeper at ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/Arenadata.Hadoop-8.solr.server recurse: true

Команды экспорта данных

Используя команду export, вы можете экспортировать документы из Solr-коллекции в формате JSON или Javabin. Использование команды показано ниже:

$ /usr/lib/solr/bin/solr export [<PARAMETERS>]

Параметры команд

Команда: export
Параметр Описание

-fields <f1,f2,fn>

Список полей для экспорта, разделенных запятыми. По умолчанию экспортируются все поля

-format <fmt>

Устанавливает формат экспортируемых документов (JSON или javabin). По умолчанию используется JSON

-limit <i>

Максимальное количество документов для экспорта. Значение по умолчанию — 100. Используйте -1 для экспорта всех документов без ограничений

-out

Указывает имя файла для сохранения экспортированных данных. По умолчанию используется шаблон <collection-name>.<format>

-url <collection_url>

Адрес URL, указывающий на коллекцию

Примеры

Экспорт всех данных коллекции
$ sudo bin/solr export -url http://ka-adh-1.ru-central1.internal:8983/solr/test_collection

Пример вывода:

NO: of shards : 2

Export complete for : test_collection_shard1_replica_n2, docs : 0

Export complete for : test_collection_shard2_replica_n8, docs : 1

Total Docs exported: 0. Time taken: 0secs

Выполнение этой команды создает в локальной файловой системе файл test_collection.json. В этом файле хранятся документы из запрошенной коллекции, например:

{"key1":"foo","key2":"bar","id":"71b51c87-142c-45a6-8ea0-82ae924fd3c4"}
Экспорт определенных полей в файл с кастомным именем
$ sudo bin/solr export -url http://ka-adh-1.ru-central1.internal:8983/solr/test_collection -fields "key1"

Пример вывода:

NO: of shards : 2
.
Export complete for : test_collection_shard1_replica_n2, docs : 0

Export complete for : test_collection_shard2_replica_n8, docs : 1

Total Docs exported: 0. Time taken: 0secs

Выполнение этой команды создает в локальной файловой системе файл test_export_file.json. В этом файле хранятся документы, содержащие только запрошенные поля, например:

{"key1":"foo"}
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней