将弹性搜索结果转换为Laravel 5 Collection

时间:2015-05-07 22:47:05

标签: elasticsearch laravel-5

我刚刚开始使用弹性搜索(link)来处理Laravel 5中的所有搜索功能。我正在使用Laravel 5和MySQL进行数据存储,并且#34; elasticsearch / elasticsearch": "〜1.0"在我的composer.json文件中,然后模型观察者在每次模型更改时更新弹性搜索索引(this article was very helpful for setting up Laravel observers)。

我可以成功查询我的数据并获得我想要的结果,但我想将结果转换回Laravel模型集合,以便我可以使用Laravel的关系在搜索结果视图中显示更多数据。

例如:我向Elastic Search查询了包含单词" cat"的文章列表。并获得了一系列点击的典型回复。我想将此数组转换回Laravel文章集合,以便我可以使用文章的关系来获取并显示所有相关的评论。

我知道有几个Laravel软件包可以声称这样做更容易,但我需要做一些非常复杂的搜索/过滤,我想坚持使用官方的elasticsearch/elasticsearch软件包,如果可能的话。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用像ElasticSearch这样的NoSQL数据库的优势很快就会消失。

也许您可以做的是为ES中的每篇文章存储最新的更新评论,但是当您只想显示一篇文章时,您会选择MySQL版本。

文章模型可能看起来像是。

{
"id": 1,
"title": "Lorem"
"comments" {
    {
        "id": 1
        "message": "First comment"
    },
    {
        "id": 2
        "message": "Second comment"
    }
}
}

对我来说,只检索ES中的id到SQL后面的grap te元素