Я пытаюсь использовать Elasticsearch-php версии 5.0 для отправки поисковых запросов в Elasticsearch 6.4.2.
Одно из критических изменений с 5.0 на 6.0 заключается в том, что существует " строгая проверка типов контента "
это означает, что запросы к Elasticsearch должны отправляться с заголовком «Content-type: application / json».
Чтобы добавить этот заголовок, я попытался использовать предложение полифрактала из этой темы :
$params = [
'index' => $index,
'type' => $mapping,
'body' => $query,
'client' => [
'curl' => [CURLOPT_HTTPHEADER => array('Content-type: text/plain')]
]
];
$res = $this->mESClient->search($params); // this is Elasticsearch/Client
return $res;
но по какой-то причине я продолжаю получать «Примечание: преобразование массива в строку», когда код пытается выполнить curl_setopt_array () , и запрос отправляется по сети.
Обратите внимание: при удалении части 'client' из массива $ params запрос принимается в Elasticsearch.