Ich weiß nicht, wie man ein Array von einer Doktrinsentität der elastischen Suche zuordnet. Indexierung scheint für 1 zu funktionieren, aber nicht für die zweite.Wie man Doktrin-Array auf elastische Suche abbildet
Hier ist meine Einheit:
/**
* @var array $viewers
* @ORM\Column(name="permission_viewers", type="array", nullable=false)
*/
protected $viewers;
Meine Elasticsearch 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}
Die Störung, die ich erhalte, wenn ich zu indizieren Elasticsearch versuchen:
[2017-02 -08 08: 23: 29,751] [INFO] [cluster.metadata] [Sankt Anna] [[unadere]] remove_mapping [[ged_document]] [2017-02-08 08: 23: 29.772] [INFO] [cluster.metadata] [Sankt Anna] [unadere] create_mapping [ged_document] [2017-02-08 08: 23: 29.865] [DEBUG] [Aktion .bulk] [Saint Anna] [unadere] [2] konnte den Bulk Item (Index) Index nicht ausführen {[unadere] [ged_document] [37], source [{"name": "vente1", "year": "2000 "," author ": {" id ": 10004133}," Kategorie ": {" id ": 10," name ":" Befehl 1 "," übergeordneter ": {" id ": 2," onlyAuthor ": true , "Name": "Espace vente", "Zuschauer": ["ROLE_UNADERE_CHARGE_DE_MISSION"]}}, "Tags": [], "breadcrumb": "Espace vente -> Commande 1"}]} org.elasticsearch.index .mapper.MapperParsingException: Objekt-Mapping [Viewer], das versucht, einen Wert ohne zugeordnetes Feld zu serialisieren, aktueller Wert [ROLE_UNADERE_CHARGE_DE_MISSION] unter org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue (ObjectMapper.java:702) bei org.elasticsearch.index.mapper.object.ObjectMapper.parse (Objec tMapper.java:497) bei org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue (ObjectMapper.java:706) bei org.elasticsearch.index.mapper.object.ObjectMapper.serializeNonDynamicArray (ObjectMapper.java:695) bei org.elasticsearch.index.mapper.object.ObjectMapper.serializeArray (ObjectMapper.java:604) bei org.elasticsearch.index.mapper.object.ObjectMapper.parse (ObjectMapper.java:489) bei org.elasticsearch. index.mapper.object.ObjectMapper.serializeObject (ObjectMapper.java:554) bei org.elasticsearch.index.mapper.object.ObjectMapper.parse (ObjectMapper.java:487) bei org.elasticsearch.index.mapper.object. ObjectMapper.serializeObject (ObjectMapper.java:554) bei org.elasticsearch.index.mapper.object.ObjectMapper.parse (ObjectMapper.java:48 7) bei org.elasticsearch.index.mapper.DocumentMapper.parse (DocumentMapper.java:544) bei org.elasticsearch.index.mapper.DocumentMapper.parse (DocumentMapper.java:493) bei org.elasticsearch.index. shard.IndexShard.prepareIndex (IndexShard.java:492) bei org.elasticsearch.action.bulk.TransportShardBulkAction.shardIndexOperation (TransportShardBulkAction.java:409) bei org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrimary (TransportShardBulkAction.java: 148) bei org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction $ PrimaryPhase.performOnPrimary (TransportShardReplicationOperationAction.java:574) bei org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction $ PrimaryPhase $ 1.doRun (TransportShardRepl icationOperationAction.java:440) bei org.elasticsearch.common.util.concurrent.AbstractRunnable.run (AbstractRunnable.java:36) bei java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) auf Java. util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) bei java.lang.Thread.run (Thread.java:745) [2017-02-08 08: 23: 29.873] [INFO] [Cluster .Metadaten] [St. Anna] [unadere] update_mapping [ged_document] (dynamisch)
[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]]
Wie sieht es aus wie in DB:
Objekt 1:
a:2{i:1;s:16:"ROLE_UNADERE_ACJ";i:0;s:30:"ROLE_UNADERE_CHARGE_DE_MISSION";}
Objekt 2:
a:1:{i:0;s:30:"ROLE_UNADERE_CHARGE_DE_MISSION";}
Danke für die Hilfe, aber ich muss hinzufügen "return array_values ($ this-> Zuschauer);" in der Getter der Entität, weil ich nicht weiß warum, aber Array wurde invertiert (Index 1 vor Index 0), also manchmal hat es nicht funktioniert. – Dgrey
Ich verstehe nicht, was das mit der Mapping-Änderung zu 'string'' zu tun hat? – Val
Weil sonst bekomme ich das: Fehler in einer oder mehreren Massenanforderung Aktionen: Index:/unadere/ged_document/35 verursacht MapperParsingException [konnte nicht parsen [category.parent.viewers]]; verschachtelt: ElasticsearchIllegalArgumentException [unbekanntes Projekt rty [1]]; – Dgrey