[英]How to map doctrine array to elastic search
我不知道如何從理論實體到彈性搜索映射數組。 索引似乎適用於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] [聖安娜] [[unadere]] remove_mapping [[ged_document]] [2017-02-08 08:23:29,772] [INFO] [cluster.metadata] [聖安娜] [unadere] create_mapping [ged_document] [2017-02-08 08:23:29,865] [DEBUG] [action.bulk] [聖安娜] [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 “]}},”標簽“:[],”面包屑“:”空格鍵-> Commande 1“}]} org.elasticsearch.index.mapper.MapperParsingException:對象映射[查看器]試圖序列化沒有字段的值與之關聯的當前值為[ROLE_UNADERE_CHARGE_DE_MISSION],位於org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:702),位於org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:497) )在org.elastics org.elasticsearch.index.mapper.object.ObjectMapper.serializeNonDynamicArray(ObjectMapper.java:695)的earch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:706)在org.elasticsearch.index.mapper.object處。 org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:489)的org.elasticsearch.index.mapper.object.ObjectMapper.serializeObject(ObjectMapper.java的ObjectMapper.serializeArray(ObjectMapper.java:604): 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 org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:544)的.mapper.object.ObjectMapper.parse(ObjectMapper.java:487)org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java) :493),位於org.elasticsearch.index.shard.IndexShard.prepareIndex(IndexShard.java:492),位於org.elasticsearch.action.bulk.TransportShardBulkActio org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrimary(TransportShardBulkAction.java:148)上的n.shardIndexOperation(TransportShardBulkAction.java:409)在org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction $ PrimaryPhase.performOn 574),位於org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:36)的org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction $ PrimaryPhase $ 1.doRun(TransportShardReplicationOperationAction.java:440)處。 util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:745)[2017 -02-08 08:23:29,873] [INFO] [cluster.metadata] [Saint Anna] [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]]
在DB中的樣子:
對象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";}
由於viewers
器只是一個字符串數組,因此您不能將其映射為nested
類型,而可以將其聲明為字符串。
viewers: {type: string, index: not_analyzed}
然后,ES將無縫地從中創建一個字符串數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.