2016-12-21 1 views
0

Ich benutze den PHP-Client. Ich kann kein Problem suchen.Elasticsearch PHP Client - Bad

Mein Problem ist, Vorschläge zu bekommen. Hier ist mein Code:

$json = ' 
POST /my_search_engine/_suggest 
{ 
    "my_engine":{ 
    "text":"'.$keyword.'", 
    "completion":{ 
     "field":"title_suggest" 
    } 
    } 
}'; 

$params ['body'] = $json; 
$response = $client->suggest ($params); 

Hier ist der Stack-Trace:

Fatal error: abgefangene Ausnahme 'Elasticsearch \ Common \ Ausnahmen \ BadRequest400Exception' mit der Meldung ‚{" Fehler " : {" root_cause ": [{" type ": " parse_exception ", " Grund ": " fehlgeschlagen xcontent "}], " Typ " ableiten: " parse_exception ", " Grund ": " konnte nicht ableiten xcontent "}, " Status ": 400}‘in /var/www/ats -site-lib/ats-site-thoracic/web/app/es_search/anbieter/elasticsearch/elasticsearch/src/Elasticsearch/Verbindungen/Connection.php: 681 Stack-Trace:
# 0/var/www/ats-site -lib/ats-site-thoracic/web/app/es_search/anbieter/elasticsearch/elasticsearch/src/Elasticsearch/Verbindungen/C onnection.php (659): Elasticsearch \ Verbindungen \ Anschluß- > tryDeserializeError (Array, 'Elasticsearch \ ... C')
# 1/var/www/ats-site-lib/ats-site-thorakale/web/app/es_search/anbieter/elasticsearch/elasticsearch/src/Elasticsearch/Verbindungen/Verbindung.php (579): Elasticsearch \ Verbindungen \ Verbindung- > tryDeserialize400Error (Array)
# 2/var/www/ats-site- lib/ats-site-thoracic/web/app/es_search/anbieter/elasticsearch/elasticsearch/src/Elasticsearch/Verbindungen/Connection.php (261): Elasticsearch in /var/www/ats-site-lib/ats -site-thoracic/web/app/es_search/anbieter/elasticsearch/elasticsearch/src/Elasticsearch/Verbindungen/Connection.php on line

Hier ist, wie das Dokument im "title_suggest" Abschluss Feld aussieht. Ich speichere ein Array von Schlüsselwörtern. Vielleicht ist das das Problem? :

"title_suggest": [ "Mitgliedschaft", "Erneuerung" ]

+2

Sie müssen die Zeile 'POST/my_search_engine/_suggest' von Ihrem' $ json' Variable entfernen. – Val

+0

Danke! Das hat den Trick gemacht. Ich hatte gehofft, dass etwas so einfach war. –

Antwort

0

ich die JSON gültig machen musste durch POST /my_search_engine/_suggest aus dem String zu entfernen. Dank @val

Dies ist das Endergebnis:

$json = ' 
{ 
    "thoracic":{ 
    "text":"'.$keyword.'", 
    "completion":{ 
     "field":"title_suggest" 
    } 
    } 
}'; 
Verwandte Themen