elasticsearch,Java,Json,elasticsearch" /> elasticsearch,Java,Json,elasticsearch" />

Java Elasticsearch中的JSON格式

Java Elasticsearch中的JSON格式,java,json,elasticsearch,Java,Json,elasticsearch,有点困惑 我使用jackson将JSON字符串解析为映射,然后在elasticsearch中接受这些映射 那很好 但是,由于JSON规范,所有整数和其他格式都需要作为字符串-aka-“key”:“value”发送。但elasticSearch将它们视为字符串,而不是数字。这使得用户评级等值的合计在本应微不足道的情况下不可能实现 如何使用JSON格式将数字/整数输入elasticsearch 有办法解决这个问题吗?您可能需要为索引创建映射 映射是定义文档及其包含的字段如何存储和索引的过程。例如,使

有点困惑

我使用jackson将JSON字符串解析为映射,然后在elasticsearch中接受这些映射

那很好

但是,由于JSON规范,所有整数和其他格式都需要作为字符串-aka-
“key”:“value”
发送。但elasticSearch将它们视为字符串,而不是数字。这使得用户评级等值的合计在本应微不足道的情况下不可能实现

如何使用JSON格式将数字/整数输入elasticsearch


有办法解决这个问题吗?

您可能需要为索引创建映射

映射是定义文档及其包含的字段如何存储和索引的过程。例如,使用映射来定义:

  • 哪些字符串字段应视为全文字段
  • 哪些字段包含数字、日期或地理位置
  • 文档中所有字段的值是否应编入catch all _all字段的索引
  • 日期值的格式
  • 用于控制动态添加字段映射的自定义规则

如果您已经拥有一些不想丢失的现有数据,则需要在更新映射后重新编制索引。由于ES索引数据的方式不同,您无法在创建类型后更改该类型


代码和错误消息将有助于确保。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对象。谢谢。它超越了我的问题,提供了理解,这将有助于预防未来的问题。干杯