2013-09-27 32 views
1

我已经定义了以下索引映射文件的一个索引映射例外:Elasticsearch:整数数组

org.elasticsearch.index.mapper.MapperParsingException: object mapping [details] trying to serialize a value with no field associated with it, current value [1] 
    at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:595) 
    at org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:467) 
    at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:599) 
    at org.elasticsearch.index.mapper.object.ObjectMapper.serializeArray(ObjectMapper.java:587) 
    at org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:459) 
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:507) 
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:451) 
    at org.elasticsearch.index.shard.service.InternalIndexShard.prepareIndex(InternalIndexShard.java:329) 
    at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:203) 
    at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicationOperationAction.java:521) 
    at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperationAction.java:419) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:722) 

从这个链接http://www.elasticsearch.org/guide/reference/mapping/array-type/,我相信这是没有问题的索引映射。我究竟做错了什么?

+0

它听起来像你试图将值推入具有非兼容映射的字段 - 是您在ES返回上面发布的映射,还是您希望映射为什么?无论哪种情况,请确保ES中当前使用的映射与您希望的映射匹配。这听起来像你试图在已经有文件后更新映射。 –

+0

问题已解决。我给索引类型名称在其余的api url中是错误的,它应该是'http:// localhost:9200/test-app/favorites/_mapping',我将它作为http:// localhost:9200/test -app /评级/ _mapping。 – CodePredator

回答

0

问题已解决。我给索引类型名称在其他api url中是错误的,它应该是'localhost:9200/test-app/favorites/_mapping';我将它作为localhost:9200/test-app/ratings/_mapping提供。

2

当您有父/子关系时,需要在索引子文档时指定父项。请看这里的Elasticsearch文档:http://www.elasticsearch.org/blog/managing-relations-inside-elasticsearch/你没有说你是如何编制索引的;通过卷曲它应该是这样的,其中activity-id是这个喜爱的父文件的ID:

curl -XPOST localhost:9200/favorites?parent=activity-id -d' 
{ 
     "favorite_count":3, 
     "details":[ 
      1, 25, 4 
     ] 
}'