nimble / elastic-bundle
简单的 Elasticsearch Symfony 集成。
v0.50
2019-02-20 15:32 UTC
Requires
- php: >=5.5
- elasticsearch/elasticsearch: ~2.0@beta
- symfony/framework-bundle: >=2.6
- symfony/symfony: >=2.6
Requires (Dev)
- doctrine/orm: ~2.5
Suggests
- doctrine/orm: Automatic listener-based entity synchronization.
This package is not auto-updated.
Last update: 2024-10-01 21:03:07 UTC
README
一个简单的包,使用官方的 Elasticsearch PHP 客户端 将 elasticsearch 集成到您的 Symfony 项目中。
为什么还需要另一个 elasticsearch 包?
我发现的大多数 ES 包都假设一个实体就是一个 ES 文档。这非常有限,因为通常需要更多的去规范化以处理更复杂的数据。您的领域模型不需要反映在您的 Elasticsearch 映射中。
此外,最受欢迎的包没有提供一种简单的方式来更新任何子实体变化时的“主”文档。这个包应该会很简单。
这个包直接暴露了官方的 elasticsearch Client
,没有过度包装。我不认为使用查询构建器有什么理由(除了基本的错误检查),因为大多数查询都可以动态地作为数组构建,并直接序列化为 JSON。
这个包只提供基本的功能,这意味着您需要编写更多的代码,但作为回报,您将获得更多的灵活性。例如
- 提供了一个与 ES 同步您的实体的机制(Doctrine 监听器或您必须手动派发创建/更新/删除事件)。
- 提供了一个将您的实体转换为 ES 文档的机制,但您必须自己编写实际的转换器。这对性能更有利,如果您需要灵活性,则这是必须的。它还允许您完全解耦 ES 和您的模型(无需在实体上添加不必要的获取器,真好!)。
- 将不会提供将 ES 结果自动转换回您的实体的机制(可能不会),因为这会严重限制灵活性。通常,您可以在几行代码中自行实现这一点,同时考虑性能。
它将拥有很棒的文档。 ;)
安装
常规的 Symfony 事宜。
composer.json 需要:"nimble/elastic-bundle": "dev-master@dev",
。
AppKernel.php 需要:new Nimble\ElasticBundle\NimbleElasticBundle(),
。