基于JHipster框架,整合Elasticsearch报错:java.lang.UnsupportedOperationException: JsonObject_bigbearxyz的博客-程序员秘密

技术标签: elasticsearch  

在springboot项目中,由于整合elasticsearch选择的:

<dependency>
    <groupId>com.github.vanroy</groupId>
    <artifactId>spring-boot-starter-data-jest</artifactId>
</dependency>
version=6.3.1
groupId=io.searchbox
artifactId=jest-common

依赖,所以在查询结果的时候,会 出现如下报错:

java.lang.UnsupportedOperationException: JsonObject

    at com.google.gson.JsonElement.getAsLong(JsonElement.java:218)
    at io.searchbox.core.SearchResult.getTotal(SearchResult.java:218)
    at com.github.vanroy.springdata.jest.mapper.DefaultJestResultsMapper.mapResults(DefaultJestResultsMapper.java:122)
    at com.github.vanroy.springdata.jest.JestElasticsearchTemplate.queryForPage(JestElasticsearchTemplate.java:415)
    at com.github.vanroy.springdata.jest.JestElasticsearchTemplate.queryForPage(JestElasticsearchTemplate.java:405)

依旧是百度无果,所以还是只能靠自己看源码解决错误,通过debugger调试,找到出错的最终代码,并定位了其所在类:io.searchbox.core.SearchResult,及其方法:

 

可见,导致出错的最终代码便是

total = obj.getAsLong();

那么,我们进去getAsLong方法去一探究竟:

奇怪,这个类的原生方法本来就不支持这个方法,那么该如何解决呢?

标题我们说到,这个springcloud框架是基于JHipster来做的开发,那么我们看框架原生是怎么做的呢?

通过查看源码,在其他的工程中找到了原因:

由上图可知,框架重写了一个和上文一样的全限定类名的方法,那么它的作用是什么呢?

通过比对,发现在上文中出错的方法被框架重写了:

也就是最重要的这一段:

total = obj.getAsJsonObject().get("value").getAsLong();

 通过这次重写,就解决了es查询报错的问题。

从上面的思路,其实我们可以看出,对引用jar包工具类的修改是如何实现的,在我们平时的工作中,相信也是会起到举一反三的作用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bigbearxyz/article/details/118415173

智能推荐

黑马程序员-简单聊天室_sfiovzs的博客-程序员秘密

---------------------- Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.(其实就是两个程序通信用的)http使用80端口 ftp使用21端口 smtp使用23

• 迭代和增量的过程改进方法——采访Jeff Dalton先生纪实_EdmondSung的博客-程序员秘密

问:您觉得什么样的过程改进的对策或策略对您或您的客户最有效?答:我之前一直在思考这个问题。我的结论是: 过程改进最难的部分不是告诉客户他们应该怎么做,也不是写一个过程给客户,甚至它也不是让他们写一个过程,做一个计划并执行它  (尽管这对过程改 进是有一定的作用)。最艰难,也是最有帮助的部分,是如何使客户推行过程改进。换而言之,如何让人们接受它并使用它。我们一直采用一种迭代和增量

Jxls2 合并单元格 (横向循环、自定义函数)_jxls横向循环_booth.chen的博客-程序员秘密

文档 :http://jxls.sourceforge.net/源码:https://github.com/jxlsteam/jxls基本语法Each-Command var is a name of the variable in Jxls context to put each new collection item when iterating items is a name of a context variable containing the collection (

如何打开浏览三维倾斜摄影数据_Bigemap的博客-程序员秘密

倾斜摄影的成果文件要通过其他软件来加载,所需要的的格式是OSGB瓦片格式,同时生成的瓦片还有一个索引文件.s3c。有了这个索引文件,我们就可以对加载的倾斜摄影数据进行定位,已经缩放操作。第一步:启动bigemap软件,并且切换到3D模式,如下图:...

随便推点

Spark-Sql快速入门系列(5) | Hive数据库_Knight_AL的博客-程序员秘密

目录一.hive和spark sql的集成方式(面试可能会问到)二.spark_shell和spark_sql操作spark_shellspark_sql使用hiveserver2 + beeline三.脚本使用spark-sql四.idea中读写Hive数据1.从hive中读数据2.从hive中写数据使用hive的insert语句去写使用df.write.saveAsTable("表名")(常用)使用df.write.insertInto("表名")saveAsTable和insertInto的原理一.

pycharm字体Font项_enable font ligatures_weixin_41990913的博客-程序员秘密

File–&gt;setings,点击选中Editor项。点击右边的Editor框内的Font分项;或者点开Editor前面的三角下拉框,也能选中Font;点开Font后,出现设置界面。右上角的reset用于重置到上一个保存的状态,apply应用你的设置;第一项, Font: 是选择你想要的字体。可以在示例框内预览。第二项, size:输入数字,设置字体的大小。第三项,line s...

使用metpy的skewt画气象探空图并计算CAPE_CIN_fangzuliang的博客-程序员秘密

文章目录1 metpy介绍2 官网代码介绍3 私人定制4 参考链接1 metpy介绍metpy是面向地球科学的较常用的库,可视化能力非常强,能基本满足气象学子的绘图要求。官网上给了许多示例代码,参考他们的代码进行适当的改动就可以私人定制出非常漂亮实用的图。安装介绍官网上给出了安装的环境需求和安装方法,非常方便。#pip管理pip install metpy#cond...

Android10 insmod源码分析_android insmod_krokodil98的博客-程序员秘密

rk3399-android-10/frameworks/opt/net/wifi/libwifi_hal/wifi_hal_common.cppstatic int insmod(const char *filename, const char *args) {int ret;int fd;fd = TEMP_FAILURE_RETRY(open(filename, O_RDONLY | O_CLOEXEC | O_NOFOLLOW));printf(“insmod filename = %s\

解决Base64报java.lang.IllegalArgumentException: Illegal base64 character 20_zkhyzy的博客-程序员秘密

报错:java.lang.IllegalArgumentException: Illegal base64 character 20原因:base64编码时使用加号,在URL传递时加号会被当成空格让base64字符串更改,服务器端解码出错解决方案: 对字符串处理,把空格更改成“+”号,利用java的replaceAll() 方法 String areaNames = areaNames.replaceAll(" ","+");例子:解码 private final Base64.Decod

在Jetson Nano上安装NoMachine_jetson nano nomachine_星光2020的博客-程序员秘密

最近需要对Jetson Nano进行操作,在它的上面测试目标识别的程序。习惯了用NoMachine远程进行操作,所以先在Nano安装NoMachine。Nano采用的是通过镜像刻录的Ubuntu 18.04系统。参考:https://knowledgebase.nomachine.com/AR02R01074从https://www.nomachine.com/download/linux&amp;id=30&amp;s=ARM下载NoMachine的ARM版本,选择 NoMachine for..

推荐文章

热门文章

相关标签