Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why PHP Solr extension gives exception "Unsuccessful query request"

I use PHP Solr extension and it when I run the code below I get the exception:

Fatal error: Uncaught exception 'SolrClientException' with message 'Unsuccessful query request : Response Code 404.

I do not understand, what is wrong, I also use Solr client successfully.

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);    
$query = new SolrQuery();   
$query->setQuery('lucene');    
$query->setStart(0);    
$query->setRows(50);    
$query->addField('cat')->addField('features')->addField('id')-> addField('timestamp');    
$query_response = $client->query($query);    
$response = $query_response->getResponse();    
print_r($response);    
?>

my bootstrap.php file is:

<?php

/* Domain name of the Solr server */
//define('SOLR_SERVER_HOSTNAME', 'solr.example.com');//solr.example.com
define('SOLR_SERVER_HOSTNAME', 'localhost');//solr.example.com


define('SOLR_SECURE', true);


/* HTTP Port to connection */
//define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8443 : 8983));
define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8080 : 8443));

/* HTTP Basic Authentication Username */
define('SOLR_SERVER_USERNAME', '');//admin

/* HTTP Basic Authentication password */
define('SOLR_SERVER_PASSWORD', '');//changeit

/* HTTP connection timeout */
/* This is maximum time in seconds allowed for the http data transfer operation. Default value is 30 seconds */
define('SOLR_SERVER_TIMEOUT', 10);

/* File name to a PEM-formatted private key + private certificate (concatenated in that order) */
define('SOLR_SSL_CERT', 'certs/combo.pem');

/* File name to a PEM-formatted private certificate only */
define('SOLR_SSL_CERT_ONLY', 'certs/solr.crt');

/* File name to a PEM-formatted private key */
define('SOLR_SSL_KEY', 'certs/solr.key');

/* Password for PEM-formatted private key file */
define('SOLR_SSL_KEYPASSWORD', 'StrongAndSecurePassword');

/* Name of file holding one or more CA certificates to verify peer with*/
define('SOLR_SSL_CAINFO', 'certs/cacert.crt');

/* Name of directory holding multiple CA certificates to verify peer with */
define('SOLR_SSL_CAPATH', 'certs/');
like image 785
Hayk Grigoryan Avatar asked Jan 15 '23 23:01

Hayk Grigoryan


2 Answers

I had a similar error message when I query Solr.

The error came from that I am using a collection and therefore you need to specify it in your configuration:

$options = array
(
        'hostname' => 'localhost',
        'login'    => '',
        'password' => '',
        'port'     => 8983,
        'path'     => 'solr/collection', // <-- Add your collection here
);
like image 57
Guillaume Renoult Avatar answered Jan 18 '23 22:01

Guillaume Renoult


What I can see as a problem is the line

define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8080 : 8443));

is your secure connection using port 8080 or 8443? I assume that the normal connection is 8080 and secure is 8443, but the line implies the opposite, the secure port is 8080 and normal one is 8443

like image 39
andypp Avatar answered Jan 18 '23 22:01

andypp