Я не знаю, как сопоставить массив от объекта доктрины до упругого поиска. Индексация кажется работающей для 1, но не для второй.Как нарисовать массив доктрины до упругого поиска
Вот моя сущность:
/**
* @var array $viewers
* @ORM\Column(name="permission_viewers", type="array", nullable=false)
*/
protected $viewers;
Мой эластичный поиск config.yml
:
ged_document:
mappings:
name: { analyzer: default, type: string }
year: { analyzer: default, type: string }
author:
type: "object"
properties:
id: {analyzer: default, type: integer}
category:
type: "object"
properties:
id: {analyzer: default, type: integer}
name: {analyzer: whitespace, type: string}
parent:
type: "object"
properties:
id: {analyzer: default, type: integer}
onlyAuthor: {type: boolean}
name: {analyzer: whitespace, type: string}
viewers: {type: 'nested', index: not_analyzed}
Я получаю ошибку, когда я пытаюсь указательным упругим поиска:
[2017-02 -08 08: 23: 29,751] [INFO] [cluster.metadata] [Saint Anna] [[unadere]] remove_mapping [[ged_document]] [2017-02-08 08: 23: 29,772] [INFO] [cluster.metadata] [Saint Anna] [unadere] create_mapping [ged_document] [2017-02-08 08: 23: 29,865] [DEBUG] [действие .bkk] [Saint Anna] [unadere] [2] не удалось выполнить индекс массового товара (индекс) {[unadere] [ged_document] [37], источник [{"name": "vente1", "year": "2000 "," author ": {" id ": 10004133}," category ": {" id ": 10," name ":" Commande 1 "," parent ": {" id ": 2," onlyAuthor ": true , "name": "Espace vente", "viewers": ["ROLE_UNADERE_CHARGE_DE_MISSION"]}}, "tags": [], "breadcrumb": "Espace vente -> Commande 1"}}} org.elasticsearch.index .mapper.MapperParsingException: сопоставление объектов [зрителей] пытается сериализовать значение без связанного с ним поля, текущее значение [ROLE_UNADERE_CHARGE_DE_MISSION] at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue (ObjectMapper.java:702) at org.elasticsearch.index.mapper.object.ObjectMapper.parse (Objec tMapper.java:497) at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue (ObjectMapper.java:706) at org.elasticsearch.index.mapper.object.ObjectMapper.serializeNonDynamicArray (ObjectMapper.java:695) at org.elasticsearch.index.mapper.object.ObjectMapper.serializeArray (ObjectMapper.java:604) at org.elasticsearch.index.mapper.object.ObjectMapper.parse (ObjectMapper.java:489) at org.elasticsearch. index.mapper.object.ObjectMapper.serializeObject (ObjectMapper.java:554) at org.elasticsearch.index.mapper.object.ObjectMapper.parse (ObjectMapper.java:487) at org.elasticsearch.index.mapper.object. ObjectMapper.serializeObject (ObjectMapper.java:554) at org.elasticsearch.index.mapper.object.ObjectMapper.parse (ObjectMapper.java:48) 7) at org.elasticsearch.index.mapper.DocumentMapper.parse (DocumentMapper.java:544) at org.elasticsearch.index.mapper.DocumentMapper.parse (DocumentMapper.java:493) at org.elasticsearch.index. shard.IndexShard.prepareIndex (IndexShard.java:492) на org.elasticsearch.action.bulk.TransportShardBulkAction.shardIndexOperation (TransportShardBulkAction.java:409) на org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrimary (TransportShardBulkAction.java: 148) в org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction $ PrimaryPhase.performOnPrimary (TransportShardReplicationOperationAction.java:574) в org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction $ PrimaryPhase $ 1.doRun (TransportShardRepl icationOperationAction.java:440) at org.elasticsearch.common.util.concurrent.AbstractRunnable.run (AbstractRunnable.java:36) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) в java. util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) на java.lang.Thread.run (Thread.java:745) [2017-02-08 08: 23: 29,873] [INFO] [кластер ,Метаданные] [Санкт Анна] [unadere] update_mapping [ged_document] (динамическая)
[Elastica\Exception\Bulk\ResponseException]
Error in one or more bulk request actions:
index: /unadere/ged_document/37 caused MapperParsingException[object mapping [viewers] trying to serialize a value with no field associated with it, current value [ROLE_UNADERE_CHARGE_DE_MISSION]]
Как это выглядит в БД:
Объект 1:
a:2{i:1;s:16:"ROLE_UNADERE_ACJ";i:0;s:30:"ROLE_UNADERE_CHARGE_DE_MISSION";}
Объект 2:
a:1:{i:0;s:30:"ROLE_UNADERE_CHARGE_DE_MISSION";}
Спасибо вам за помощь, но я должен добавить «return array_values ($ this-> viewers);" в получателе объекта, потому что я не знаю, почему, но массив был инвертирован (индекс 1 перед индексом 0), поэтому иногда он не работал. – Dgrey
Я не понимаю, что это связано с изменением отображения на 'string''? – Val
Потому что в противном случае я получаю это: Ошибка в одном или нескольких действиях массового запроса: индекс:/unadere/ged_document/35 вызвал ошибку MapperParsingException [не удалось проанализировать [category.parent.viewers]]; inested: ElasticsearchIllegalArgumentException [unknown prope rty [1]]; – Dgrey