我正在使用FOS Elastica捆绑软件,并试图在Elasticsearch中索引一些数据。
我遵循了文档,所以我写了这个会议
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: ~
但是我得到一个错误
动作/元数据行[3]格式不正确,应该是START_OBJECT,但找到的是[VALUE_STRING]
当我尝试不使用序列化程序时,一切运行良好,并且所有定义的字段都已建立索引。
有人知道如何解决此错误吗?我在FosElastica GitHub存储库上发现的每个问题都与JMSSerializer有关。
答案 0 :(得分:0)
确保您的exclusion strategy未设置为“全部”。如果是这种情况,您应该使用@JMS \ Expose()以便将该字段暴露给给定的组。
例如:
use JMS\Serializer\Annotation as JMS;
/**
* @JMS\Expose()
* @JMS\Groups(["elastica"})
*/
private $name = '';