映射定义具有不受支持的参数:[store : true]
Mapping definition has unsupported parameters: [store : true]
我定义索引 ads
如下:
fos_elastica:
clients:
default: { host: %elastica_host%, port: %elastica_port% }
indexes:
ads:
types:
brand:
mappings:
name:
type: string
boost: 5
slug:
type: string
boost: 4
date : ~
isPublished: ~
user:
type: nested
properties:
username: ~
email: ~
persistence:
driver: orm
model: Minn\AdsBundle\Entity\Brend
elastica_to_model_transformer:
service: minn_ads.transformers_elastica.brand
provider: ~
listener:
immediate: ~
finder: ~
仅供参考: 1. 这就是 Brend
与 User
与 @ManyToOne
的链接方式
/**
* @ORM\ManyToOne(targetEntity="Minn\UserBundle\Entity\User")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
仅供参考: 2. 我正在为 FOSElasticaBundle 和 Elastica 使用 dev-master
分支。对于 elasticsearch,我使用的是 2.1.1.
填充命令php app/console fos:elastica:populate
总是returns这个错误:
[Elastica\Exception\ResponseException]
{"root_cause":[{"type":"mapper_parsing_exception","reason":"Mapping definition for [user] has unsupported parameters: [store : true]"}],"type":"mapper_parsing_exception","reason":"无法解析映射[品牌]:
[user] 的映射定义具有不受支持的参数:[store : true]","caused_by":{"type":"mapper_parsing_exception","reason":"Mapping definition for [user] has unsupported parameters: [store : true]"}}
我检查了 app/logs/dev.log
,我发现为索引 ads
生成的映射有一个额外的参数 "store":true
。您可以向下查看:
[2015-12-20 21:28:21] elastica.DEBUG:记录请求 {"path":"ads/","method":"PUT","data":{"mappings":{"brand":{"properties":{"name":{"type":"string","boost":5,"store":true},"slug":{"type":"string","boost":4,"store":true},"date":{"type":"string","store":true},"isPublished":{"type":"string","store":true},"user":{"type":"nested","properties":{"username":{"type": "string","store":真},"email":{"type":"string","store":真}},"store":真}},"dynamic_date_formats":[],"_meta":{"model":"Minn\AdsBundle\Entity\Brend"}}}},"query":[],"connection":{ "config":{"headers":[]},"host":"127.0.0.1","port":9200,"logger":"fos_elastica.logger","enabled":真}} []
下面是带有额外 "store": true
的映射。有没有关于如何配置 FOSElasticaBundle 以在没有 "store": true
的额外行的情况下获取映射的任何想法?
{
"mappings": {
"brand": {
"properties": {
"name": {
"type": "string",
"boost": 5,
"store": true
},
"slug": {
"type": "string",
"boost": 4,
"store": true
},
"date": {
"type": "string",
"store": true
},
"isPublished": {
"type": "string",
"store": true
},
"user": {
"type": "nested",
"properties": {
"username": {
"type": "string",
"store": true
},
"email": {
"type": "string",
"store": true
}
},
"store": true # extra line! If deleted, it will work!
}
}
}
}
}
MappingBuilder.php
中存在一个错误,它会在 store
property is not specified.
时尝试添加 store: true
您可以尝试明确指定 store: false
以便 !isset($property['store'])
测试失败:
mappings:
name:
type: string
boost: 5
slug:
type: string
boost: 4
date : ~
isPublished: ~
user:
type: nested
store: false <---
properties:
username: ~
email: ~
您可以尝试的另一件事是修改私有 $skipTypes
数组以在 completion
的基础上包含 nested
,这可以解决问题。
这是 FOSElasticaBundle 中的错误。在这个PR 987.
中解决了
您只需评论 Index/MappingBuilder.php 中与该错误相关的行!
我定义索引 ads
如下:
fos_elastica:
clients:
default: { host: %elastica_host%, port: %elastica_port% }
indexes:
ads:
types:
brand:
mappings:
name:
type: string
boost: 5
slug:
type: string
boost: 4
date : ~
isPublished: ~
user:
type: nested
properties:
username: ~
email: ~
persistence:
driver: orm
model: Minn\AdsBundle\Entity\Brend
elastica_to_model_transformer:
service: minn_ads.transformers_elastica.brand
provider: ~
listener:
immediate: ~
finder: ~
仅供参考: 1. 这就是 Brend
与 User
与 @ManyToOne
/**
* @ORM\ManyToOne(targetEntity="Minn\UserBundle\Entity\User")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
仅供参考: 2. 我正在为 FOSElasticaBundle 和 Elastica 使用 dev-master
分支。对于 elasticsearch,我使用的是 2.1.1.
填充命令php app/console fos:elastica:populate
总是returns这个错误:
[Elastica\Exception\ResponseException]
{"root_cause":[{"type":"mapper_parsing_exception","reason":"Mapping definition for [user] has unsupported parameters: [store : true]"}],"type":"mapper_parsing_exception","reason":"无法解析映射[品牌]:
[user] 的映射定义具有不受支持的参数:[store : true]","caused_by":{"type":"mapper_parsing_exception","reason":"Mapping definition for [user] has unsupported parameters: [store : true]"}}
我检查了 app/logs/dev.log
,我发现为索引 ads
生成的映射有一个额外的参数 "store":true
。您可以向下查看:
[2015-12-20 21:28:21] elastica.DEBUG:记录请求 {"path":"ads/","method":"PUT","data":{"mappings":{"brand":{"properties":{"name":{"type":"string","boost":5,"store":true},"slug":{"type":"string","boost":4,"store":true},"date":{"type":"string","store":true},"isPublished":{"type":"string","store":true},"user":{"type":"nested","properties":{"username":{"type": "string","store":真},"email":{"type":"string","store":真}},"store":真}},"dynamic_date_formats":[],"_meta":{"model":"Minn\AdsBundle\Entity\Brend"}}}},"query":[],"connection":{ "config":{"headers":[]},"host":"127.0.0.1","port":9200,"logger":"fos_elastica.logger","enabled":真}} []
下面是带有额外 "store": true
的映射。有没有关于如何配置 FOSElasticaBundle 以在没有 "store": true
的额外行的情况下获取映射的任何想法?
{
"mappings": {
"brand": {
"properties": {
"name": {
"type": "string",
"boost": 5,
"store": true
},
"slug": {
"type": "string",
"boost": 4,
"store": true
},
"date": {
"type": "string",
"store": true
},
"isPublished": {
"type": "string",
"store": true
},
"user": {
"type": "nested",
"properties": {
"username": {
"type": "string",
"store": true
},
"email": {
"type": "string",
"store": true
}
},
"store": true # extra line! If deleted, it will work!
}
}
}
}
}
MappingBuilder.php
中存在一个错误,它会在 store
property is not specified.
store: true
您可以尝试明确指定 store: false
以便 !isset($property['store'])
测试失败:
mappings:
name:
type: string
boost: 5
slug:
type: string
boost: 4
date : ~
isPublished: ~
user:
type: nested
store: false <---
properties:
username: ~
email: ~
您可以尝试的另一件事是修改私有 $skipTypes
数组以在 completion
的基础上包含 nested
,这可以解决问题。
这是 FOSElasticaBundle 中的错误。在这个PR 987.
中解决了您只需评论 Index/MappingBuilder.php 中与该错误相关的行!