symfony - FOSElastica 为什么我的结果没有序列化?

标签 symfony elasticsearch foselasticabundle jms-serializer

我已经配置了 FOSElasticaBundle 如下:

fos_elastica:
    clients:
        default: { host: %elasticsearch_host%, port: %elasticsearch_port%  }
    serializer: ~
    indexes:
        app:
            types:
                tags:
                    serializer:
                        groups: [Default]
                    mappings:
                        name: ~
                    persistence:
                        driver: orm
                        model: AppBundle\Entity\Tag
                        provider: ~
                        listener: ~
                        finder: ~

为了测试,我的数据库中有三个标签:tag1tag2新标签。 我的实体看起来像:

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Class Tag
 * @package AppBundle\Entity
 *
 * @ORM\Entity
 * @ORM\Table(name="tags")
 */
class Tag
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * @var int
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(type="string")
     * @Assert\NotBlank()
     */
    protected $name;

我正在按如下方式搜索索引标签:

$finder = $this->container->get('fos_elastica.finder.app.tags');

$results = [];
if ($query !== null) {
    $results = $finder->find("*" . $query . "*");

    //$results should be serialized, but aren't

    return new Response($results);
}

return new JsonResponse([
    'results' => $results
]);

我的回复是:{"results":[{},{},{}]}

为什么 $results 没有序列化?当我调试 $results 时,里面有对象。

最佳答案

您不了解文档。您可以在以下文件中阅读: https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/Resources/doc/serializer.md

FOSElasticaBundle 支持使用 Serializer 组件将您的对象序列化为 JSON,JSON 将直接发送到 Elasticsearch 服务器。结合自动映射,这意味着类型不必映射。

FOSElasticaBundle 不返回序列化数据。它使用 serialzier 将序列化数据发送到 elasticsearch 服务器。使用序列化程序时,您不必在配置中提供映射。

关于symfony - FOSElastica 为什么我的结果没有序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590659/

相关文章:

ruby-on-rails - rails : Elasticsearch :through association mapping

elasticsearch - 什么是最适合用于 ElasticSearch 聚合的数据类型 5 : numeric or keyword?

amazon-web-services - 如果它在 ec2 实例中运行,如何检查我的 Elasticsearch 是否启动

symfony - Symfony2/弹性束

symfony - 如何在 Symfony 中设置 Typescript?

php - Symfony Yaml 组件:使用 Yaml::dump 时如何始终将字符串用引号引起来

PhpStorm 2019.2 Symfony Controller 中未使用的元素

validation - 验证实体中的值 - 通过 setter 或断言验证?

symfony - fos:elastica:填充新数据,外部插入mysql中