当前位置: 首页 > 知识库问答 >
问题:

使用Elasticsearch 2.3准备索引时的NumberFormatException

齐元章
2023-03-14

我使用的是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]];Nested: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)在mapper.documentParser.ParseObject(documentParser.java:262)在org.ellasticsearch.index.mapper.documentParser.java:122),在org.ellasticSearch.index.mapper.documentMapper.parse(documentParser.java:309),在org.ellasticSearch.index.shard.indexShard.prepareIndex(indexShard.java:580),在Java:212)位于org.elasticsearch.action.index.transportIndexAction.executeIndexRequestonPrimary(TransportIndexAction.java:224)在org.ellasticSearch.action.index.transportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:158)在org.ellasticSearch.action.index.transportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:66)在le.java:37)在org.elasticsearch.action.support.replication.transportReplicationAction$primaryOperationTransportHandler.messageReceed(TransportReplicationAction.java:279)在org.elasticSearch.action.support.replication.transporttService$4.dorun(TransportService.java:376)在org.ellasticsearch.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在java.lang.numberformatexception.forInputString(numberformatexception.java:65),在java.lang.long.parselong(long.java:589),在java.lang.long.parselong(long.java:631),在org.ellasticsearch.common.xcontent.support.abstractxContentParser.longValue(abstractxContentParser.java:145),在Java:241)位于org.elasticsearch.index.mapper.fieldmapper.parse(fieldmapper.java:321)...还有23个

共有1个答案

欧阳永宁
2023-03-14

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

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

 类似资料:
  • 在开始使用前我们首先了解一个ToB企业在百度进行竞价推广引流到官网获客的基本流程: 为了能够获取百度搜索推广投放产生的消费、展现、点击、结合官网接入可获取广告线索产出,以支持对广告投放端到端的投放ROI评估,我们需要进行以下应用准备: 1. 在百度营销客户端对投放的目标页面URL规范UTM参数设置 在术语解释中我们也有提及UTM 参数是业界用来统一跟踪流量来源的设置,最常见的UTM参数定义如下:

  • 我想要使用mysqli执行一个简单的准备好的语句,但它不会工作。 致命错误:未捕获异常“mysqli_sql_exception”,消息为“查询/准备好的语句中没有使用索引SELECT*FROM ACCOUNCT WHERE EMAIL=?和password=?‘mysqli_stmt->execute()#1{main}

  • 问题内容: 我的目的是在表中找到与存储在String中的集合匹配的所有项目: 这似乎并不完美,它总是向我发出以下警告: 如果我有一个参数,这将是显而易见的: 但是由于我不得不处理这个问题,这对我来说有点复杂。 问题答案: Prepared语句没有参数,因为您在准备列表之前已将列表插入到该语句中。 至此,您创建的SQL语句为: 由于该语句没有参数,因此失败。而不是将项目插值到语句(容易注入)中,而是

  • 在正式使用Yearning前,你需要先设置如下setup(请务必花几分钟时间阅读!)。 创建用户并确认其角色 创建权限组并将权限组赋予给对应的用户 添加数据源信息 为数据源创建自定义审核规则 在设置页面配置各项配置信息 根据需求调整自定义审核规则 创建用户并确认其角色 创建用户 在Yearning中用户可以通过以下方式创建: 在 管理->用户 页面admin用户自行创建用户。 打开 管理->设置

  • 主要内容:一、索引概述,1.索引的分类,二、索引的创建,1.创建表时创建索引,2. 在已经存在的表上创建索引,三、删除索引,四、隐藏索引,五、哪些情况下适合创建索引,1.频繁作为 WHERE 查询条件的字段,2. 有唯一性限制的字段,3.经常GROUP BY和ORDER BY的列,4.UPDATE、DELETE的WHERE条件列,,5.DISTINCT字段需要创建索引,6.多表JOIN连接操作时,7. 使用列的类型小的创建索引,,,,,,,,,,,,上一篇我们主要是对索引设计体系的一个讲解,本篇

  • 问题内容: 在不使索引离线的情况下备份Lucene索引的最佳实践是什么(热备份)? 问题答案: 您不必停止IndexWriter即可备份索引。 只需使用SnapshotDeletionPolicy,它就可以“保护”给定的提交点(及其包含的所有文件),以免被删除。然后,将该提交点中的文件复制到您的备份中,最后释放该提交。 如果备份需要一段时间才能运行,这很好- 只要您不使用SnapshotDelet