如何在Laravel控制器中查询ElasticSearch

时间:2017-01-06 20:34:05

标签: php 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数组中获取查询 - 我只能输出特定字段和关键字。

任何帮助都非常感谢,提前感谢。

修改

要在我的刀片模板视图中输出的代码:

<!-- 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 -->

2 个答案:

答案 0 :(得分:1)

您需要使用query DSL构建查询。您可以像这样开始使用query_string query

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

答案 1 :(得分:0)

只需以'query'=&gt;的形式包含变量$ query2为我工作。再次感谢Val指出我正确的方向。

修改

使用更新的代码:

    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);
    }