almeida/laravel-elasticsearch

Laravel 4.2+ 对 ElasticSearch 的包装器

0.2.0 2015-04-10 13:50 UTC

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

当我对配置等进行整理时,我会解决它。

必读材料

相关性

如何计算?

使用Marvel监控elasticsearch(开发)

https://elastic.ac.cn/downloads/marvel

感谢您的笔记

我接受比特币小费。[18tEqEUnyJaqvKh3CCNAAai9seztLb3Tw9].

他们也应该这么做!来吧,它将变成一件大事。

许可证

MIT