php - 使用串行器填充的FosElasticaBundle不会索引所有字段

标签 php symfony elasticsearch foselasticabundle

我正在使用FOS Elastica bundle 包,并尝试在Elasticsearch中索引一些数据。

我遵循了文档,所以我写了这个 session

fos_elastica:
    clients:
        default: { host: '%env(ELASTICSEARCH_HOST)%', port: '%env(ELASTICSEARCH_PORT)%' }
    indexes:
        app:
            index_name: app
            types:
                user:
                    serializer:
                        groups: [elastica]
                    persistence:
                        driver: orm
                        model: AppBundle\Entity\User
                        provider: ~
                country:
                    serializer:
                        groups: [elastica]
                    persistence:
                        driver: orm
                        model: AppBundle\Entity\Country
                        provider: ~

然后在我的实体内部,添加了序列化组
use Symfony\Component\Serializer\Annotation\Groups;
...

/**
 * @ORM\Table
 * @ORM\Entity
 */
class Country
{
    ...

    /**
     * @var string
     *
     * @Groups({"elastica"})
     *
     * @ORM\Column(type="string", length=64, unique=true)
     * @Assert\NotBlank
     * @Assert\Length(max=64)
     */
    private $name = '';
}

然后,当我启动fos:elastica:populate时,一切工作都很好,但是我放置elastica序列化组的所有字段均未编制索引。

我使用的是Symfony序列化程序,并遵循了官方文档,但我不理解并发现为什么我的字段没有被索引。

我试图添加
serializer:
    serializer: serializer

要么
serializer: ~

但我得到一个错误

Malformed action/metadata line [3], expected START_OBJECT but found [VALUE_STRING]



当我尝试不使用序列化程序时,一切运行良好,并且所有定义的字段都已建立索引。

有人知道如何解决此错误吗?我在FosElastica GitHub存储库上发现的每个问题都与JMSSerializer有关。

最佳答案

确保未将exclusion strategy设置为“全部”。如果是这种情况,您应该使用@JMS \ Expose()以便将该字段暴露给给定的组。

例如 :

use JMS\Serializer\Annotation as JMS;


 /**
  * @JMS\Expose()
  * @JMS\Groups(["elastica"})
  */
 private $name = '';

关于php - 使用串行器填充的FosElasticaBundle不会索引所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53259562/

相关文章:

elasticsearch - ElasticSearch Springboot NativeSearchQueryBuilder问题

scala - 如何通过使用Elasticsearch Hadoop获得术语向量

PHP:一个 mysql_query 语句中的多个 SQL 查询

php - 我的 PHP 查询函数无法与 INSERT 查询一起使用

lucene - 没有文档ID的elasticsearch upsert

php - Symfony 2.6 - 按名称呈现个人选择字段(单选、复选框)

php - 如何在 symfony2 中清除 session 变量

php - 无法使用 PDO 连接到 mySQL 服务器

php - 如何检索 codeigniter 中的列值?

php - Xampp 上的 Symfony 项目返回 500 个内部服务器错误