Не могу создать ядро ​​с помощью Solarium и Solr 8 - PullRequest
0 голосов
/ 15 апреля 2020

Я использую клиентский пакет Solr docker image solr:8 и PHP solarium\solarium v5. Я пытаюсь создать ядро ​​со следующим кодом:

$config = [
    'endpoint' => [
        'default' => [
            'host' => 'solr',
            'path' => '/',
            'core' => 'test',
            'port' => '8983'
        ]
    ]
];

$client = new Solarium\Client($config);
$coreName = 'test';

$coreAdminQuery = $client->createCoreAdmin();
$createAction = $coreAdminQuery->createCreate();
$createAction->setCore($coreName);
//$createAction->setInstanceDir($coreName);
//$createAction->setConfigSet('_default');
//$createAction->setConfigSet('data_driven_schema_configs');
$coreAdminQuery->setAction($createAction);

$response = $client->coreAdmin($coreAdminQuery);

Сбой при следующем выводе на консоль:

Fatal error: Uncaught Solarium\Exception\HttpException: Solr HTTP error: OK (400)
{
  "responseHeader":{
    "status":400,
    "QTime":3},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.core.SolrResourceNotFoundException"],
    "msg":"Error CREATEing SolrCore 'test': Unable to create core [test] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/var/solr/data/test'",
    "code":400}}
 in /web/vendor/solarium/solarium/src/Core/Query/Result/Result.php on line 59

Solarium\Exception\HttpException: Solr HTTP error: OK (400)
{
  "responseHeader":{
    "status":400,
    "QTime":3},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.core.SolrResourceNotFoundException"],
    "msg":"Error CREATEing SolrCore 'test': Unable to create core [test] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/var/solr/data/test'",
    "code":400}}
 in /web/vendor/solarium/solarium/src/Core/Query/Result/Result.php on line 59

Call Stack:
    0.0003     394440   1. {main}() /web/test-solr.php:0
    0.0608    1472360   2. Solarium\Client->coreAdmin() /web/test-solr.php:27
    0.0608    1472360   3. Solarium\Client->execute() /web/vendor/solarium/solarium/src/Core/Client/Client.php:1084
    0.0906    1695136   4. Solarium\Client->createResult() /web/vendor/solarium/solarium/src/Core/Client/Client.php:841
    0.0951    1735984   5. Solarium\QueryType\Server\CoreAdmin\Result\Result->__construct() /web/vendor/solarium/solarium/src/Core/Client/Client.php:809


Process finished with exit code 255

Любая закомментированная строка не помогает, если uncommented.

Похоже, ядро ​​создано, но на самом деле не может быть инициализировано, потому что, если я запускаю следующую команду CLI, она показывает следующее:

solr@fac0f2c3eb92:/opt/solr-8.5.0$ solr create -c test -n data_driven_schema_configs

ERROR:
Core 'test' already exists!
Checked core existence using Core API command:
http://localhost:8983/solr/admin/cores?action=STATUS&core=test

Если я перехожу по ссылке, она показывает следующее:

{
  "responseHeader":{
    "status":0,
    "QTime":1},
  "initFailures":{"test":"org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core test: Error loading solr config from /var/solr/data/test/conf/solrconfig.xml"},
  "status":{
    "test":{}}}

В то же время отлично работает следующая команда CLI:

solr@fac0f2c3eb92:/opt/solr-8.5.0$ solr create -c test2 -n data_driven_schema_configs

Created new core 'test2'

Ядра, созданные CLI, работают без проблем с настройкой:

http://localhost:8983/solr/admin/cores?action=STATUS&core=test2:

{
  "responseHeader":{
    "status":0,
    "QTime":0},
  "initFailures":{},
  "status":{
    "test2":{
      "name":"test2",
      "instanceDir":"/var/solr/data/test2",
      "dataDir":"/var/solr/data/test2/data/",
      "config":"solrconfig.xml",
      "schema":"managed-schema",
      "startTime":"2020-04-15T02:32:34.063Z",
      "uptime":48543,
      "index":{
        "numDocs":0,
        "maxDoc":0,
        "deletedDocs":0,
        "indexHeapUsageBytes":0,
        "version":2,
        "segmentCount":0,
        "current":true,
        "hasDeletions":false,
        "directory":"org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(MMapDirectory@/var/solr/data/test2/data/index lockFactory=org.apache.lucene.store.NativeFSLockFactory@4572a13f; maxCacheMB=48.0 maxMergeSizeMB=4.0)",
        "segmentsFile":"segments_1",
        "segmentsFileSizeInBytes":69,
        "userData":{},
        "sizeInBytes":69,
        "size":"69 bytes"}}}}

Что я делаю не так и как программно создать ядро?

...