【问题标题】:NumberFormatException in preparing index using Elasticsearch 2.3使用 Elasticsearch 2.3 准备索引时出现 NumberFormatException
【发布时间】:2016-09-22 22:29:24
【问题描述】:

我正在使用 Elasticsearch 2.3 (服务器和 java 客户端)

准备索引的代码:

private TransportClient txClient;
// client intialization

Map<String, String> values = new HashMap<String, String>();
values.put("name", "Dev");
values.put("id", "2f3cc5d4-9c4c-4a49-9ebd-c8cd86758118");
values.put("salary", "50000");

IndexResponse response = txClient
             .prepareIndex("novel","books", "1de90f05-7cc8-4796-9e92-5b766e8bb0d1")
             .setSource(values).execute().actionGet();

错误:

原因:MapperParsingException[无法解析[id]];嵌套:NumberFormatException[对于输入字符串:“2f3cc5d4-9c4c-4a49-9ebd-c8cd86758118”]; 在 org.elasticsearch.index.mapper.FieldMapper.parse(FieldMapper.java:329) 在 org.elasticsearch.index.mapper.DocumentParser.parseObjectOrField(DocumentParser.java:309) 在 org.elasticsearch.index.mapper.DocumentParser.parseAndMergeUpdate(DocumentParser.java:738) 在 org.elasticsearch.index.mapper.DocumentParser.parseDynamicValue(DocumentParser.java:625) 在 org.elasticsearch.index.mapper.DocumentParser.parseValue(DocumentParser.java:442) 在 org.elasticsearch.index.mapper.DocumentParser.parseObject(DocumentParser.java:262) 在 org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:122) 在 org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:309) 在 org.elasticsearch.index.shard.IndexShard.prepareIndex(IndexShard.java:580) 在 org.elasticsearch.index.shard.IndexShard.prepareIndexOnPrimary(IndexShard.java:559) 在 org.elasticsearch.action.index.TransportIndexAction.prepareIndexOperationOnPrimary(TransportIndexAction.java:212) 在 org.elasticsearch.action.index.TransportIndexAction.executeIndexRequestOnPrimary(TransportIndexAction.java:224) 在 org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:158) 在 org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:66) 在 org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryPhase.doRun(TransportReplicationAction.java:639) 在 org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) 在 org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:279) 在 org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:271) 在 org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:75) 在 org.elasticsearch.transport.TransportService$4.doRun(TransportService.java:376) 在 org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.NumberFormatException:对于输入字符串:“2f3cc5d4-9c4c-4a49-9ebd-c8cd86758118” 在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Long.parseLong(Long.java:589) 在 java.lang.Long.parseLong(Long.java:631) 在 org.elasticsearch.common.xcontent.support.AbstractXContentParser.longValue(AbstractXContentParser.java:145) 在 org.elasticsearch.index.mapper.core.LongFieldMapper.innerParseCreateField(LongFieldMapper.java:275) 在 org.elasticsearch.index.mapper.core.NumberFieldMapper.parseCreateField(NumberFieldMapper.java:241) 在 org.elasticsearch.index.mapper.FieldMapper.parse(FieldMapper.java:321) ... 23 更多

【问题讨论】:

  • 能不能分享下索引的映射关系
  • @DhruvPal 我没有在任何地方定义映射。它会动态映射它。
  • 我不明白你为什么要在 'id' 字段中插入一个 uid,因为 es 还为每个文档提供了 id。有没有这样的要求。我也看到了 Caused by: MapperParsingException 所以我猜它与映射有关
  • 能否分享异常发生时出现的动态映射
  • @DhruvPal 我在 setSource() 中设置 Map,我没有添加对象字段。

标签: elasticsearch


【解决方案1】:

如果您第一次插入具有 ID 字段的文档,并且它的值是任何数字类型,那么如果在映射中找不到 ID 字段的任何映射,它会将 Long 类型设置为 ID 字段。

因此,如果您希望 id 字段为字符串,则应在将任何文档插入索引之前将其显式映射到映射中的字符串数据类型。

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多