Подключение к 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>]
Параметры команд
Параметр | Описание |
---|---|
-c <collection_name> |
Имя коллекции |
-z <zk_connection_string> |
Опциональный параметр. Строка подключения ZooKeeper. Можно не указывать, если строка подключения к ZooKeeper не изменялась вручную |
Примеры
$ /usr/lib/solr/bin/solr version
Пример вывода:
8.11.2
$ /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 с тем же набором параметров.
|
Параметры команд
Параметр | Описание |
---|---|
-c <collection> |
Имя создаваемой коллекции |
-d <conf_dir> |
Указывает директорию конфигурации (configset) для создания коллекции. Если параметр не указан, используется конфигсет /usr/lib/solr/server/solr/configsets/_default |
-n <config_name> |
Имя, используемое для загрузки конфигсета в ZooKeeper. По умолчанию используется имя коллекции |
-s <shards>, -shards <shards> |
Количество шардов для разбиения коллекции.
Значение по умолчанию — |
-rf <replicas>, -replicationFactor <replicas> |
Количество реплик каждого документа в коллекции.
Значение по умолчанию — |
Параметр | Описание |
---|---|
-c <collection> |
Имя удаляемой коллекции |
-deleteConfig <true|false> |
Указывает, удалять ли директорию конфигурации из ZooKeeper.
По умолчанию используется значение |
Примеры
$ /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
Параметры команд
Параметр | Описание |
---|---|
-authConfDir <dir> |
Указывает директорию для хранения файлов конфигурации, связанных с аутентификацией |
-blockUnknown <true|false> |
Блокирует доступ ко всем Solr-эндпойнтам для неаутентифицированных пользователей |
-credentials <username:password> |
Учетные данные в формате |
-prompt <true|false> |
Запрашивает ввод учетных данных.
Необходимо указать либо параметр |
-type <type> |
Указывает механизм аутентификации ( |
-updateIncludeFileOnly <true|false> |
Обновляет только файл solr.in.sh, не включая/отключая аутентификацию |
-z <zkString> |
Строка подключения к ZooKeeper. Можно не указывать, если строка подключения к ZooKeeper не изменялась вручную |
-d <dir> |
Указывает директорию сервера Solr (по умолчанию /usr/lib/solr/server/). Используйте этот параметр, только если вы изменяли путь к домашней директории Solr |
-s <dir> |
Указывает домашнюю директорию Solr для хранения учетных данных и файлов конфигурации аутентификации (например, basicAuth.conf) |
Примеры
Перед выполнением следующей команды убедитесь, что файл 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>]
Параметры команд
Параметр | Описание |
---|---|
-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 создаются при необходимости. |
Примеры
$ /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
$ /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
$ /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>]
Параметры команд
Параметр | Описание |
---|---|
-fields <f1,f2,fn> |
Список полей для экспорта, разделенных запятыми. По умолчанию экспортируются все поля |
-format <fmt> |
Устанавливает формат экспортируемых документов (JSON или javabin). По умолчанию используется JSON |
-limit <i> |
Максимальное количество документов для экспорта.
Значение по умолчанию — |
-out |
Указывает имя файла для сохранения экспортированных данных.
По умолчанию используется шаблон |
-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"}