FOSElastica + JMs 序列化程序格式不正确的数据



我安装了ElasticSearch 6和他们的Docker镜像,一切正常。

然后我像文档所说的那样安装和配置了 FOSElastica。

这是以下配置fos_elastica

fos_elastica:
clients:
default: { host: '%env(ELASTICSEARCH_HOST)%', port: '%env(ELASTICSEARCH_PORT)%' }
serializer:
serializer: jms_serializer
indexes:
app:
client: default
types:
user:
serializer:
groups: [elastica]
persistence:
driver: orm
model: AppBundleEntityUser
provider: ~
listener: ~
finder: ~

以及我的用户实体的模型,将elastica序列化程序组提供给某个字段

AppBundleEntityUser:
exclusion_policy: ALL
properties:
firstname:
expose: true
groups: [elastica, list, details]
lastname:
expose: true
groups: [elastica, list, details]
locale:
expose: true
groups: [elastica, details]

序列化程序适用于我的 API 并且配置良好

jms_serializer:
metadata:
auto_detection: true
directories:
AppBundle:
namespace_prefix: 'AppBundle'
path: '%kernel.project_dir%/config/serializer'

当我尝试填充 ElasticSearch 时,我认为这是一个错误的序列化错误

In Http.php line 181:
[ElasticaExceptionResponseException]                                              
Malformed action/metadata line [3], expected START_OBJECT but found [VALUE_STRING]

我尝试在fos_elastica配置中使用properties.type配置设置字段类型,但没有成功。

我尝试使用另一个实体,但出现相同的错误。

我已经在 FOSElasticaBundle ~1 年前在同一个项目上工作,并且人们正在工作......

我没有成功找到问题所在,如果有JMSSerializer/FOSElastica错误或配置错误

我错过了配置中的某些内容吗?你已经有这个问题了吗?

我也有类似的问题。以下是原始的弹性配置(给出了此错误(。

fos_elastica:
clients:
default: { host: '%env(ELASTICSEARCH_HOST)%', port: '%env(ELASTICSEARCH_PORT)%' }
serializer:
serializer: jms_serializer
indexes:
app:
finder: ~
types:
goods:
properties:
name: { type: text }
brand: { type: text }
cost: { type: float }
category:
type: "object"
properties:
id: ~
name: ~
goodsDescriptions:
type: "object"
properties:
id: ~
name: ~
description: ~
persistence:
driver: orm
model: AppEntityGoodsGoods
provider: ~
finder: ~
repository: AppSearchRepositoryGoodsRepository

但是,我在供应商foselastic 内部爬了很长时间,并注意到添加它的数据是基于jms_serializer的,这是显而易见的,但当时我并不这么认为。通过删除此序列化,它被工作了。 我们有不同的设置,但也许它会给你一个想法。

要避免此错误,只需删除

JSON_PRETTY_PRINT

来自您的 JMS/Symfony Serializer 配置。

最新更新