$params = [
'index' => 'test_index',
'type' => 'test_type',
'id' => 1,
'body' => [ "title" => "タイトルだよ" ]
];
$response = $client->index($params);
var_dump( $response );
で実行
$php elastic.php
PHP Fatal error: Uncaught Elasticsearch\Common\Exceptions\BadRequest400Exception: {"error":"Content-Type header [application/octet-stream] is not supported","status":406} in /Users/dp/ElasticsearchPhp/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:669
Stack trace:
ContentTypeがダメか、Curlの時は注意してましたが、Elasticsearch-PHP [6.0] のマニュアルに指定ってあったかな?
引用:https://dev.classmethod.jp/server-side/elasticsearch/elasticsearch-6-breaking-changes/
Elasticsearch への API は Transport通信を除いて、HTTP(s) リクエストによって操作します。Elasticsearch 5系までは自動検出していた Content-Type ヘッダですが、Elasticsearch 6系より指定が必須となりました。
下記のようにClietにCurlのパラメータ指定を追加してOK
$params = [
'index' => 'test_index',
'type' => 'test_type',
'id' => 1,
'body' => [ "title" => "タイトルだよ" ]
'client' => [
'curl' => [
CURLOPT_HTTPHEADER => [
'Content-type: application/json',
]
]
]
];
$response = $client->index($params);
var_dump( $response );