Laravel + MongoDB + Elasticsearch,Elasticquent的配置问题

时间:2016-02-24 16:12:25

标签: php mongodb laravel elasticsearch

我正在使用Laravel,ElasticSearch和MongoDB构建Web应用程序。为此,我使用https://github.com/jenssegers/laravel-mongodb连接Laravel和MongoDB(完美运行)和https://github.com/elasticquent/Elasticquent连接到Elasticsearch(我遇到问题)。

我的模型看起来像这样:

namespace App;

use Moloquent;
use Elasticquent\ElasticquentTrait;

class Article extends Moloquent
{
    use ElasticquentTrait;
    protected $collection = 'Articles';
}

我的控制器搜索功能如下所示:

public function search()
{
    $texte = $_GET['texte'];
    $articles = Article::where('Title', 'regexp', "/$texte/")->get();
    //$articles = Article::search('bu');
    //dd($articles);
    return view('pages.articles', compact('articles'));
}

当使用Article模型中的where函数时,我得到了这个,即3个结果

ElasticquentCollection {#134 ▼
  #items: array:3 [▼
    0 => Article {#142 ▶}
    1 => Article {#143 ▶}
    2 => Article {#144 ▶}
  ]
}

当使用搜索功能时,我得到类似的结果,没有结果

ElasticquentResultCollection {#156 ▼
  #took: 1
  #timed_out: false
  #shards: array:3 [▶]
  #hits: array:3 [▶]
  #aggregations: []
  #instance: Article {#161 ▶}
  #items: []
}

是否有人必须处理相同类型的架构并可以帮助我解决这个问题?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

更改

$articles = Article::search('bu');

$articles = Article::search('bu')->get();

您没有抓取该集合。您必须使用get()first()来收集搜索到的内容。