almeida / laravel-elasticsearch
Laravel 4.2+ 对 ElasticSearch 的包装器
0.2.0
2015-04-10 13:50 UTC
Requires
- php: >=5.4.0
- elasticsearch/elasticsearch: 1.1.*
- illuminate/support: 4.2.*
- league/fractal: 0.11.*
This package is not auto-updated.
Last update: 2024-09-28 16:57:00 UTC
README
前言
我需要改进搜索。目前使用mongob、2dspheres等。
引入Elasticsearch。基本上就是一个官方客户端的包装器。
https://elastic.ac.cn/guide/en/elasticsearch/client/php-api/current/index.html
下午的快速开发
- 尝试构建一个易于使用的ElasticSearch包
- 应该与league/fractal兼容
- 应该与illuminate/collections兼容
- 应该与fractal/item兼容
- 应该与fractal/resources兼容
- 等等。
通过Composer安装
require : {
"almeida/laravel-elasticsearch" : "dev-master"
}
步骤1
扩展抽象类 ElasticDocument
以获取简单的CRUD。
让我们假设我们正在处理电影。
/** * Acme\Search\MovieDocument */ class MovieDocument extends \Almeida\LaravelElasticSearch\ElasticDocumentAbstract { protected $index = 'movie_cluster'; protected $type = 'movies'; public function setId($movie) { return $movie->id; } }
创建/更新索引
创建索引。
假设你已经有一个工作的 fractal/transformer
$options = []; $options['transformer'] = 'Acme\MovieTransformer'; $document = new \Acme\Search\MovieDocument($options); $document->setBody($movie); $document->index(); // or $document->create(); // or $document->update(); // OR $document = new \Acme\Search\MovieDocument(); $document->setBody($movie); $document->setTransformer('Acme\MovieTransformer'); $document->index();
删除索引 (@todo)
删除索引。
$document = new \Acme\Search\MovieDocument(); $document->delete($movie->id);
在控制台中大量索引
$n = 0; Movie::chunk(100, function($movies) use(&$n) { foreach ($movies as $i => $movie) { $document = new \Acme\Search\MovieDocument(); $document->setBody($movie); $document->setTransformer('Acme\MovieTransformer'); $document->index(); $this->info("Indexed : {$movie->title}"); $n++; } }); $this->info("Indexed [{$n}] movies");
搜索(进行中)
承诺在未来几天内解决这个问题。
$movieTitle = 'Scarface'; $document->basicSearch($movieTitle);
待办事项
-
进一步思考这个问题
-
将搜索、统计和聚合移动到特质中,以便我们只在适用的文档上使用它们
注意事项
在OSX上本地开发时,我无法通过浏览器在https://:9200访问Elasticsearch,尽管我可以在浏览器中访问它
以下修复了这个问题...
实际访问方式是,http://127.0.0.1:9200
当我对配置等进行整理时,我会解决它。
必读材料
- https://elastic.ac.cn/guide/en/elasticsearch/guide/current/
- https://elastic.ac.cn/guide/en/elasticsearch/client/php-api/current/_quickstart.html
相关性
如何计算?
使用Marvel监控elasticsearch(开发)
https://elastic.ac.cn/downloads/marvel
感谢您的笔记
- http://www.slideshare.net/bencorlett/discovering-elasticsearch
- http://blog.madewithlove.be/post/integrating-elasticsearch-with-your-laravel-app/
- http://blog.madewithlove.be/post/elasticsearch-aggregations/
- https://www.youtube.com/watch?v=waTWeJeFp4A
- https://www.youtube.com/watch?v=7FLXjgB0PQI
- https://laravel.net.cn/docs/4.2/eloquent#model-observers
- https://www.youtube.com/watch?v=GrdzX9BNfkg
我接受比特币小费。[18tEqEUnyJaqvKh3CCNAAai9seztLb3Tw9].
他们也应该这么做!来吧,它将变成一件大事。
许可证
MIT