gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:56:27 24 4
gpt4 key购买 nike

我正在使用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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com