Я определил свой индекс 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. Я использую ветки dev-master
для FOSElasticaBundle и Elastica. Для elasticsearch я использую 2.1.1.
Команда заполнения php app/console fos:elastica:populate
всегда возвращает эту ошибку:
[Elastica \ Exception \ ResponseException]
{"root_cause": [{"type": "mapper_parsing_exception", "reason": "Определение сопоставления для [пользователя] имеет неподдерживаемые параметры: [store: true]"} ], "type": "mapper_parsing_exception", "reason": "Не удалось проанализировать сопоставление [марка]:
Определение сопоставления для [user] имеет неподдерживаемые параметры: [store: true]", "called_by": {"type ":" mapper_parsing_exception "," reason ":" Определение сопоставления для [пользователя] имеет неподдерживаемые параметры: [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": true}, "email": {"type": "string "," store ": true}}," store ": true}}," 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 ": true}} []
Ниже приведено отображение с дополнительным "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!
}
}
}
}
}