简体   繁体   English

Elasticsearch PHP客户端-错误

[英]Elasticsearch PHP Client - Bad

I'm using the PHP client. 我正在使用PHP客户端。 I can search no problem. 我可以搜索没有问题。

My problem is getting suggestions. 我的问题是得到建议。 Here is my code: 这是我的代码:

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

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

Here is the stack trace: 这是堆栈跟踪:

Fatal error : Uncaught exception 'Elasticsearch\\Common\\Exceptions\\BadRequest400Exception' with message '{"error":{"root_cause":[{"type":"parse_exception","reason":"Failed to derive xcontent"}],"type":"parse_exception","reason":"Failed to derive xcontent"},"status":400}' in /var/www/ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:681 Stack trace: 致命错误 :消息为“ {{error“:{” root_cause“:[{” type“:” parse_exception“,” reason“:”未能派生xcontent“}的消息未捕获的异常'Elasticsearch \\ Common \\ Exceptions \\ BadRequest400Exception',] / var / www / ats-site-lib / ats-site-thoracic / web / app / es_search中的“ type”:“ parse_exception”,“ reason”:“无法导出xcontent”},“ status”:400}' /vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:681堆栈跟踪:
#0 /var/www/ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(659): Elasticsearch\\Connections\\Connection->tryDeserializeError(Array, 'Elasticsearch\\C...') #0 /var/www/ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(659):Elasticsearch \\ Connections \\ Connection- > tryDeserializeError(数组,'Elasticsearch \\ C ...')
#1 /var/www/ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(579): Elasticsearch\\Connections\\Connection->tryDeserialize400Error(Array) #1 /var/www/ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(579):Elasticsearch \\ Connections \\ Connection- > tryDeserialize400Error(数组)
#2 /var/www/ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(261): Elasticsearch in /var/www/ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php on line 682 #2 /var/www/ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(261):/ var / www中的 Elasticsearch /ats-site-lib/ats-site-thoracic/web/app/es_search/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php在第682

Here is how a document's "title_suggest" completion field looks. 这是文档的“ title_suggest”完成字段的外观。 I am storing an array of keywords. 我存储了一组关键字。 maybe this is the problem? 也许这是问题吗? :

"title_suggest": [ "Membership", "Renewal" ] “ title_suggest”:[“会员资格”,“续订”]

I had to make the JSON valid by removing POST /my_search_engine/_suggest from the string. 我必须通过从字符串中删除POST /my_search_engine/_suggest来使JSON有效。 Thanks to @Val 感谢@Val

This is the end result: 这是最终结果:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM