2017-01-06 2 views
1

LaravelコントローラでElasticSearchの簡単なクエリの構文を助けることができると願っています。LaravelコントローラでElasticSearchを照会する方法

ビューでブレードテンプレートにインデックス付けして出力できましたが、検索フォーム変数でシードデータの検索を実行できるようにクエリを正しく取得できません。

コントローラからの検索方法:

public function searchPlugins() { 

    $client = Elasticsearch\ClientBuilder::create()->build(); 

    $query2 = Request::input('query2'); 

    $params = [ 
     'index' => 'partnerpages', 
     'type' => 'plugins', 
     'body' => [ 
      'query' => $query2['query2'] 
     ] 
    ]; 

    $plugins = $client->search($params); 

    return View::make('search2')->with('plugins', $plugins); 
} 

私はparams配列の右側にクエリを取得することはできません - 私は、特定の分野やキーワードの出力にそれを得ることができます。

ご協力いただきありがとうございます。私のブレードテンプレートのビューの出力に

EDIT

コード:

<!-- Search engine --> 
      <div class="col-md-8"> 

       {{ Form::open(array('route' => 'search-plugins2', 'class' => 'form')) }} 

       {{ Form::input('search', 'query2', Input::get('query2', ''))}} 
       {{ Form::submit('Search plugins') }} 

       {{ Form:: close() }} 

      </div><!-- end of Search engine --> 

      <div class="col-md-8"> 

       <!-- insert Search engine --> 
       <br/> 
       <h1>Plugin results</h1> 
       <br/> 


       <div class="panel panel-default"> 
        <div class="panel-body"><h2></h2> 
        <div><?php print_r($plugins);?></div> 
        <div></div> 
        <div><small></small></div> 
       </div> 
        </div> 
      </div><!-- end of row --> 

答えて

1

あなたがquery DSLを使用してクエリを作成する必要があります。あなたは、このようなquery_string queryを使用して起動することができます。

$params = [ 
    'index' => 'partnerpages', 
    'type' => 'plugins', 
    'body' => [ 
     'query' => [ 
      'query_string' => [ 
       'query' => $query2['query2'] 
      ] 
     ] 
    ] 
]; 
+0

おかげで、私はには、私は値にアクセスしようとしている意味を理解し、「不正な文字列が 『QUERY2』をオフセット」存在しないキー、すなわちquery2を使用する配列の配列。私はハードコードのクエリを次に良い場合。私はそこに問題がある場合、ビューからコードを追加しますか? – pfeatherstone

+0

変数 'query' => $ query2が正常に機能しました。もう一度ありがとうございます。しかしforeachループで配列を出力するのにまだ問題があります。たぶんそれは多次元配列なので、print_rに頼った – pfeatherstone

+0

喜んで助けて! – Val

0

だけ=> $ QUERY2が私のために働いた「QUERY」の形で変数を含みます。正しい方向に私を指差してくれてありがとう。更新されたコードで編集

public function searchPlugins() { 

     $client = Elasticsearch\ClientBuilder::create()->build(); 

     $query2 = Input::get('query2', 'RSS'); 

     $params = [ 
    'index' => 'partnerpages', 
    'type' => 'plugins', 
    'body' => [ 
     'query' => [ 
      'query_string' => [ 
       'query' => $query2 
      ] 
     ] 
    ] 
]; 

$plugins = $client->search($params); 

     return View::make('search2')->with('plugins', $plugins); 
    } 
@valが、私はエラーを取得しています
+0

これは答えではありません。これはコメントでなければなりません。これを削除して、提供された@valueにコメントを付けてください。 - または、これをFULLの回答に変えて、使用したコードを実演してください。 –

+0

にコードが追加されています – pfeatherstone

関連する問題