2017-11-23 8 views
0

新しいlaravel v5.3プロジェクトをセットアップし、エラスティック検索ドライバをインストールしてコンポーザー経由でエラスティック検索を実装しました。しかし、私は私のページをリロードすると、私は常に受信このページは私のコードは私の完全なコードは、私のシステム上で弾性検索が実行されても動作していません。エラスティック検索設定がlaravel v5.3で動作していない

composer.json

"require": { 
     "php": ">=5.6.4", 
     "elasticsearch/elasticsearch": "^6.0", 
     "laravel/framework": "5.3.*" 
    }, 

web.php

Route::get('/',array('uses' => '[email protected]')); 

コントローラ

<?php 
namespace App\Http\Controllers;  
class ElasticSearch extends Controller 
    { 

     // elastic 
     protected $elastic; 
     //elastic cliend 
     protected $client; 

     public function __construct(Client $client) 
     { 
      $this->client = ClientBuilder::create()->build(); 
      $config = [ 
       'host' =>'localhost', 
       'port' =>9200, 
       'index' =>'people', 
      ]; 
      $this->elastic = new ElasticClient($config); 
     } 

     public function addPeopleList(){ 
      echo "<pre>"; 
      print_r($this->$elastic); 
      exit; 
     } 
    } 

しかし、私はページを更新するときに、このページでは、私はこのメッセージを受信して​​動作していませんページがロードされていないapp.phpファイルの設定を変更していないことを伝えたいことが1つあります。この問題を解決するには、エダクアートしてください。

答えて

1

いくつかの設定でエラスティッククライアントをインスタンス化する場合は、メソッドClientBuilder::fromConfig(array $config)を使用する必要があります。あなたは配列として提供されなければならないホスト上に気づくことができたよう あなたのケースでは、

<?php 
$client = ClientBuilder::fromConfig([ 
    'hosts' => [ 'localhost:9200' ] 
]); 

でなければなりません。

また、私が使用しているElasticsearchクライアントにElasticClientクラスがあるかどうかはわかりません。

コントローラから実際のコードを提供した場合、エラーが含まれています。次のようなクラスプロパティを呼び出す必要があります:print_r($this->client)$はプロパティ名の近くにありません)。

Finalyあなたのコントローラは次のようになります必要があります。

<?php 
namespace App\Http\Controllers; 

use Elasticsearch\ClientBuilder; 

class ElasticSearch extends Controller 
{ 
    /** 
    * @var \Elasticsearch\Client 
    */ 
    protected $client; 

    public function __construct() 
    { 
     $this->client = ClientBuilder::fromConfig([ 
      'hosts' => [ 
       'localhost:9200', 
      ], 
     ]); 
    } 
    public function addPeopleList(){ 
     echo "<pre>"; 
     print_r($this->client); 
     exit; 
    } 
} 

そして

$params = [ 
    'index' => 'my_index', 
    'type' => 'my_type', 
    'id' => 'my_id', 
    'body' => ['testField' => 'abc'] 
]; 

$response = $client->index($params); 
print_r($response); 

公式ドキュメントに従ってこのコマンドを呼び出す必要がインデックスにドキュメントを追加する公式ドキュメントを見つけることができますここにhttps://github.com/elastic/elasticsearch-php

PS私の英語には申し訳ありません。完璧ではありません。

関連する問題