nimble/elastic-bundle

简单的 Elasticsearch Symfony 集成。

安装: 201

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 3

分支: 2

开放问题: 0

类型:symfony-bundle

v0.50 2019-02-20 15:32 UTC

This package is not auto-updated.

Last update: 2024-10-01 21:03:07 UTC


README

Scrutinizer SensioLabsInsight

一个简单的包,使用官方的 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(),