Laravel搜索引擎

8
我正在使用Laravel构建一个REST api来供移动应用使用。现在我需要一个搜索引擎。
首先,我从未使用过任何搜索引擎。因此,我正在寻找一种简单易用但仍能很好地进行全文搜索和使用“where”语句过滤的搜索引擎。
我要在其中执行搜索的表有1列(varchar45),需要通过全文搜索进行搜索,然后有5个列(int)用于使用“where”语句进行过滤 - 使用mysql方法。我还对该表执行inner join以生成结果时打印出其他内容。
因此,我查看了sphinx和Elasticsearch,并决定选择ES。
我观看了Laracon中关于ES的介绍:https://www.youtube.com/watch?v=waTWeJeFp4A 我还看了这个包: https://github.com/freekmurze/searchindex 这让我有几个问题:
1)我是否删除我的mysql数据库并只存储所有数据在ES中?
2)如果1-是的话,我是否仍然可以使用mysql数据库,仅使用ES来存储索引?- 因为我只需要在一个表上执行搜索(总共搜索5行)。 3)如果2-是的话,我是否仍然保留当前mysql表中的索引?例如,标题列上的全文索引,另一列上的FK和其他3个列上的索引。
4)由于这是我第一次使用搜索引擎,是否有任何关于如何使用ES与Laravel的其他教程/书籍/代码片段?
感谢您的帮助。

个人而言,我仍然将所有信息存储在MySQL中,只是将大表存储在elasticsearch中,并仅用于在大数据中进行搜索,其中完整索引较慢,或者我需要获取有序结果。此外,请记住最好将数据存储在某种数据库中。将所有信息存储在ES上并不好,因为据我所知,没有快速的方法可以导出ES数据并将其导入到另一个服务器上。如果您选择仍然使用MySQL与ES,请仅保留您需要的索引(例如,如果您不通过全文搜索,则删除它)。 - sanis
1个回答

10

谢谢,Igor。那么我只是在 ES 中有一个那个表的副本。我之前发现了那个教程,它很棒。我甚至在 laracasts 论坛中链接了它,因为我看到很多人在问 ES 相关的问题。现在我遇到了一个新问题,如果您有时间看一下就好了。首先 - 我无法将 MySql 时间戳映射到 ES,我尝试了 long/timestamp/integers,但都不行。您可以在 https://stackoverflow.com/questions/28433724/cant-map-mysql-timestamp-into-elasticsearch 上了解更多信息。 - user2722667
其次,我在使用ES排序函数时遇到了问题。我的查询看起来像这样: $sort = ['sort' => ['id' => 'desc']]; $posts = Post::searchByQuery($query,null,null,null,null,$sort); - user2722667

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接