Java Elasticsearch中的JSON格式
有点困惑 我使用jackson将JSON字符串解析为映射,然后在elasticsearch中接受这些映射 那很好 但是,由于JSON规范,所有整数和其他格式都需要作为字符串-aka-Java Elasticsearch中的JSON格式,java,json,
elasticsearch,Java,Json,
elasticsearch,有点困惑 我使用jackson将JSON字符串解析为映射,然后在elasticsearch中接受这些映射 那很好 但是,由于JSON规范,所有整数和其他格式都需要作为字符串-aka-“key”:“value”发送。但elasticSearch将它们视为字符串,而不是数字。这使得用户评级等值的合计在本应微不足道的情况下不可能实现 如何使用JSON格式将数字/整数输入elasticsearch 有办法解决这个问题吗?您可能需要为索引创建映射 映射是定义文档及其包含的字段如何存储和索引的过程。例如,使
“key”:“value”
发送。但elasticSearch将它们视为字符串,而不是数字。这使得用户评级等值的合计在本应微不足道的情况下不可能实现
如何使用JSON格式将数字/整数输入elasticsearch
有办法解决这个问题吗?您可能需要为索引创建映射 映射是定义文档及其包含的字段如何存储和索引的过程。例如,使用映射来定义:
- 哪些字符串字段应视为全文字段
- 哪些字段包含数字、日期或地理位置
- 文档中所有字段的值是否应编入catch all _all字段的索引
- 日期值的格式
- 用于控制动态添加字段映射的自定义规则
代码和错误消息将有助于确保。JSON输入的第一部分{“正分数”:“0”,“publishedAt”:“2017-09-07T15:35:34.000Z”}被读取为String:String,而不是elasticsearch接受的String:Object。当我将其更改为“score”:0时,jackson-com.fasterxml.jackson.databind.exc.MismatchedInputException出现解析错误:无法反序列化START_数组令牌中的java.lang.String实例。。。那么,我如何使用JSON格式将数字/整数输入elasticsearch呢?我用来将JSON数据发送给jackson的代码是
try(BufferedReader br=new BufferedReader(new FileReader(addder)){for(String line;(line=br.readLine())!=null;{System.out.println(“#”+this.counter+“processing”+line);this.storeMap(this.convertToMap(line));this.counter++;}
和上面示例JSON中的双逗号是我在这个stackoverflow文本框中的粘贴错误,而不是在原始代码中我找到了解决方案。我正在向jackson发送对象,但使用的是hm=mapper.readValue(json,newTypeReference(){})代码>我应该使用的hm=mapper.readValue(json,newTypeReference(){})代码>-更改TyperReference中的第二个字符串到ype对象。谢谢。它超越了我的问题,提供了理解,这将有助于预防未来的问题。干杯