作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


首先定义了一个简单的结构体来接收es query返回的数据:

// ElasticSearchResponse es query查询返回的结果格式
type ElasticSearchResponse struct {
Hits struct {
Total struct {
Value int64 `json:"value"`
} `json:"total"`
Hits []struct {
Source map[string]interface{} `json:"_source"`
} `json:"hits"`
} `json:"hits"`
Error map[string]interface{} `json:"error"`
}

使用中发现某些int64类型的值,读出来后精度丢失。

解决办法参考了这篇文章:https://www.cnblogs.com/hi3254014978/p/16702845.html

具体代码如下:

	esRsp := &ElasticSearchResponse{}
decoder := json.NewDecoder(bytes.NewReader(body))
decoder.UseNumber()
// err = json.Unmarshal(body, esRsp) // 这里出现整形的精度丢失
err = decoder.Decode(esRsp)

总结:

1.es作为大型系统软件,应该要支持二进制PB格式的输出,这样精度的问题就彻底没了;

2.已经无数次遇到了int64的精度,以及用string类型代替int64等这一类的问题了。JSON不死,这个问题会一直痛下去。

【解决了一个小问题】es query返回数据中, int64类型精度丢失的问题的更多相关文章

  1. 【解决了一个小问题】go.mod文件中引用另一个库,总会自动拉取新版本

    我的项目依赖某个旧的公共库: require ( git.xxx.com/myprj/mylib v0.0.43 ) 可以编译的时候,系统总会自动加上这样的路径: require ( git.xxx. ...

  2. 【解决了一个小问题】golang gin框架中的模板,让模板中的参数不要做HTML转义

    代码中使用了类似的方式来向模板填充参数: c.HTML(200, "list.html", gin.H{"data":builder.String()}) 模板 ...

  3. 【解决了一个小问题】golang go.mod中多了一个斜杠导致replace无效

    replace github.com/sxxx/common_lib/src/ => ../../common_lib/src 修改成 replace github.com/sxxx/commo ...

  4. 返回数据中提取数据的方法(JSON数据取其中某一个值的方法)

    返回数据中提取数据的方法 比如下面的案例是,取店铺名称 接口返回数据如下: {"Code":0,"Msg":"ok","Data& ...

  5. 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题

    问题背景: 在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符 ...

  6. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)

    Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer   Advanced Installer :Free for 30 da ...

  7. 后台使用Spring MVC 4.15 版本 通过 ajaxFileUpload plugin插件上传文件相应时引起的一个小问题,Chrome、Firefox中出现SyntaxError:unexpected token <

    html: 使用ajaxFileUpload插件做文件上传时,后台返回json格式的数据,js代码如下: 接下来,把结果错误信息打印出来: 先在网上找了下解决办法方案,stackoverflow上有说 ...

  8. C#小知识点记录(QQ交流群的一个小问题)Linq提取数据

    请教 这里 LINQ想 找到 最后的 4条 记录 然后放在 这里这个 List Linq查找怎么写呀? 解答:写了一个小例子作为解答. namespace C_Sharp { class Progra ...

  9. AFN请求后台返回数据为NSInlineData类型的处理

    在利用AFN进行数据解析时出现返回数据为 <7b227374 61747573 223a302c 226d6573 73616765 223a22e6 82a8e79a 84e6898b e69 ...

  10. fastjson循环引用 问题@ManyToOne @OneToOne返回数据中"$ref"问题

    返回数据为 这样前端就无法获取正确数据(至少是不改变代码,不增加代码量的情况下) 所以还是改返回值比较好 根据查阅 https://blog.csdn.net/qq_38487524/article/ ...

随机推荐

  1. 火山引擎A/B测试在消费行业的案例实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,火山引擎数智平台举办了"走进火山-全链路增长:数据飞轮转动消费新生力"的活动,其中火山引 ...

  2. 利用 Solon-web 框架写一个 Hello World

    Solon 项目的开源地址: https://gitee.com/noear/solon 最近看了不少别人写的各种框架的 Hello world 示例,有些看起来,真的很复杂. 今天,我们用号称简单到 ...

  3. logback.xml 配置文件

    logback.xml <?xml version="1.0" encoding="UTF-8"?> <configuration> & ...

  4. 【每日一题】7.月月查华华的手机 (枚举 or 序列自动机)

    题目链接:Here 题意总结:\(N\) 次查询串 \(B\) 是否是 \(A\) 的子序列. 思路一 个人做法,枚举原字符串的每一位,如果匹配当前字符串的字符则 m++ 直到字符串枚举完毕或者 m ...

  5. CompletableFuture 测试类

    package com.example.apidemo.completableFutrue; import java.util.Random; import java.util.concurrent. ...

  6. OpenSCA技术原理之npm依赖解析

    本文主要介绍基于npm包管理器的组件成分解析原理. npm 介绍 npm(全称Node Package Manager)是Node.js的预设软件包管理器. npm的依赖管理文件是package.js ...

  7. 创新推出 | Serverless 调试大杀器:端云联调

    背景 说起当前最火一个技术, 不可避免地讨论到一个概念: Serverless.作为一种新型的应用架构,Serverless 让我们摆脱了维护基础设施的繁琐,只需要上传代码包或者镜像, 即可得到一个弹 ...

  8. 定向减免!函数计算让 ETL 数据加工更简单

    业内较为常见的高频短时 ETL 数据加工场景,即频率高时延短,一般费用大头均在函数调用次数上,推荐方案一般为攒批处理,高额的计算成本往往令用户感到头疼,函数计算推出定向减免方案,让 ETL数据加工更简 ...

  9. lighthouse性能优化分析工具使用

  10. 微信小程序从基础入门到项目实战-黑马程序员-pink老师推荐(持续更新)

    https://www.bilibili.com/video/BV1WJ41197sD/?spm_id_from=333.788.recommend_more_video.0