2023-03-13 11:04:54 来源:腾讯云
背景
记录一个最近半年犯了两次的低级编码错误,校验某个字符串信息为枚举类的某实例时,写成了:枚举类的实例.equals(字符串)
,结果总是 false
,打印信息貌似正确,实际执行结果总是不达预期,仔细看看代码才发现问题。本文记录本周开发工作中遇到的几个小问题,Bug 是无法完全消除的,只能尽量减少。
ES 连接及时关闭
查看某进程的端口占用时,看到好多正连接着的 ES 连接对象,普通的 Java Web 应用,没有后台任务,怎么会保持这么多连接呢?
【资料图】
问题分析:代码有缺陷,有些请求使用 ES 进行数据查询完成后,没有关闭 ES 连接对象。ES 连接不关闭,有什么问题呢?
Linux 的每个连接都会创建一个文件句柄,毫无疑问,Socket 连接用完后不关闭,会导致端口资源泄漏。
jackson 序列化异常
在将 ElasticSearch 的 Response
对象序列化时碰到一个异常信息:
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.elasticsearch.common.text.Text and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: org.elasticsearch.action.search.SearchResponse["hits"]->org.elasticsearch.search.SearchHits["hits"]->org.elasticsearch.search.SearchHit[0]->org.elasticsearch.search.SearchHit["shard"]->org.elasticsearch.search.SearchShardTarget["nodeIdText"])
有两种解决办法:
定义一个配置类,设置 jackson 的序列化配置属性。通过 SpringBoot 的全局配置spring.jackson.serialization.FAIL_ON_EMPTY_BEANS
设置为 false ,该配置默认为 true ,这个方式更方便。ElasticSearch 执行 SQL 的 Java 实现
回到文章标题说的问题,ElasticSearch 6 以后的版本支持 SQL 语句检索了,如何用 Java 代码实现 ES SQL 检索呢?
第一 Part,基础知识。先搞明白需求及相关的技术支持,主要如下:
ElasticSearch-SQL 功能,区分 GitHub 上的一个插件和 ElasticSearch 自身的支持能力。ES 6 以后内置了X-Pack 组件,提供了 Elasticsearch SQL 能力,就是说不用安装插件就可以使用 ES SQL 能力了。而网上很多都是介绍 ElasticSearch SQL 插件安装的,却不曾想 ES 已经内置了。ES 6 与 ES 8 的 Rest API 的语法不一样,8 以上的版本语句是/_xpack/_sql?format=
,但是旧版本是 /_xpack/sql?format=
,版本依赖问题有时候挺坑的。网上大量的资料,估计都是来自官网,全都是 /_xpack/_sql?format=
,结果我测试用的环境是 ES6 的,一直报错。第二 Part,Java 实现 ES-SQL 操作的几种方法:
Rest API 请求/_xpack/sql?format=
。JDBC-ES ,这个功能是收费的。确定方案一。
第三 Part,使用 elasticsearch-rest-high-level-client
包的 RestAPI 客户端工具可以实现 ES-SQL 的操作。基本思路是构建一个 RestClient 对象,请求路径为 /_xpack/_sql?format=json
这个用 txt 的时候,总是得不到结果,用 json 就没问题。
重要源代码如下:
// ES 连接信息构造RestClientBuilder restClientBuilder = null;if (hasPwd) {final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();/** 设置 ES 认证信息 */ credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(userName, password));restClientBuilder = RestClient.builder(https) .setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider));} else { restClientBuilder = RestClient.builder(https)}// xpack-sql 请求构造String searchIndex = "/_xpack/sql?format=json";Request request = new Request("POST", searchIndex);request.setJsonEntity(queryJsonString);RestClient restClient = restClientBuilder.build();try { Response response = restClient.performRequest(request); String body = EntityUtils.toString(response.getEntity()); // TODO 处理 ES 响应结果} catch (IOException e) {}
ToDesk 服务占据高 CPU
电脑一直占据大量的 CPU,top 看是 ToDesk 进程,执行下面的操作好了:
sudo launchctl unload /Library/LaunchDaemons/com.youqu.todesk.service.plist复制代码
我碰到的问题,绝对不是个例,百度是个好东西,面向百度编程也没什么不好啊!
启示录
如何用 Java 实现 ES-SQL 检索流程呢?《ES SQL 检索的 Java 实现流程》,该文给的启示是直接用 Rest API 方式访问 _xpack/sql
,那就是简单了底层就是 URLConnection
。
而 ES 自身有 RestHighLevelClient 等一些列的 API,怎么用它来实现 _xpack/sql
请求呢?自己用 RestTemplate 实现倒是可以,问题是如果 ES 有认证怎么办呢?
《java 连接带认证的 elasticsearch》 这篇文章又给了我启示,用 RestClient
连接 ES 访问特定的 URL 完成。
标签:
- 加快虚拟仿真实训基地建设 启动职业学校信息化建设试点很必要
- “双减”后如何在满足学生多样需求方面做“加法”?
- 处于生理活跃期且心理发展不成熟 高校开设公共卫生必修课很必要
- 价格低于相应蔬菜零售价 西安投放约1万吨政府储备蔬菜
- 深受年轻消费群体所青睐 国潮风商品成为年货新选择
知识
- 他把银行卡卖给骗子,“黑吃黑”“截胡”十万元
- “老司机”4S店试驾豪车 结果油门当刹车撞了
- 新开工改造城镇老旧小区5.34万个
- 发动巡河志愿者2万余名 “用心护好每一条河”
- 假客服的套路:伪装成大平台客服,层层布局引人上钩
人物
- 天天即时看![ES三周年]Springboot 实现 ES-SQL 的流程
- 汉缆股份:3月10日融资买入1474.73万元,融资融券余额2.38亿元
- 李颖委员——大力发展智能航运
- 全球视点!炒鸡内金的功效与作用是什么_炒鸡内金
- 粉玫瑰花语_粉玫瑰的花语是什么 快报
- 全球视点!草房子好词好句和感悟_草房子好词好句
- Leetcode 2587. Rearrange Array to Maximize Prefix Score
- 扩大在华投资,英特尔旗下 Mobileye 成立上海嘉定技术测试中心
- 03月12日00时河南漯河疫情数据 阳了以后为什么会腰疼?应该怎么办? 环球快资讯
- 雷克萨斯“国产版”,从21万降至16万多,比荣放漂亮10倍,放弃CRV 天天热闻
- 香港黄道益活络油怎么用_黄道益活络油在香港多少钱一瓶
- 网络不可用如何设置_网络不可用是什么原因怎么设置
- 【环球新视野】大同市消防救援支队关于警惕防范假借消防部门名义开展消防安全培训推销消防产品等违法行为的公告
- 吉林网络广播电视台
- 网约车司机熬来春天?_世界信息
- 琼瑶电影燃烧吧火鸟
- 环球即时:win7电脑关机自动重启是什么原因(win7关机后电脑自动重启)
- 去寻找,下一个舞台! 环球热文
- 海贼王第几集_海贼王2年后是第几集
- 聚焦基础研究 培养顶尖人才梯队
- 房屋知识科普:大产权新房出售满2年和不满2年有什么区别呢
- 一二三四跑步歌mp3_一二三四跑步歌mp3_焦点热闻
- Airtel 5G Plus服务推出价格与您的4G计划相同-全球快看点
- 新华视点|这些建议,为了“一老一小”生活更舒心
- 穆帅:拜仁替补席坐着马内等三名攻击手 匀我一个就好了 关注
- 全球热消息:微克怎么打出来_微克怎么打
- 今日热讯:春怀_对于春怀简单介绍
- 海口安居房首付多少?
- 生鼠宝宝好还是牛宝宝好命_生鼠宝宝好还是牛宝宝好
- 【全面推进乡村振兴】连城塘前:精心策划一月一主题活动“三八”国际妇女节人气满满|世界微资讯
- 天天速讯:三月春风暖 争做追“锋”人
- 忍耐 名言_忍耐的名言-新消息
- 全国人大代表吴国平:加快培育一批文旅行业龙头企业和“专精特新”企业|世界动态
- 喝什么茶降血压最好 喝什么茶降血压效果较好 环球热议
- 海南屯昌:苦瓜种出“甜”生活
- 世界速递!京本相子
- 虹桥观点|谢长安:中国是全球数字化技术发展领先的市场
- 中信证券:建筑建材行业或将有较好增长 每日消息
- 销售心理学_销售中的心理学|播资讯
- 分久必合合久必分这话谁说的_分久必合合久必分-快报
- 伊彤代表:深入挖掘首都文化资源 提升文化产业科创能力
- 支付宝支付密码忘记了怎么找回_支付宝支付密码怎么改-全球快播报
- 艾德韦宣集团公布2022财年年度权益分配方案
- 成都前2月完成出口退税20.5亿元 同比增长6.42% 世界播资讯
- 世界通讯!如何招商引资
- 快递气泡袋废物利用_快递气泡袋 天天日报
- 巴西狂欢节 全球快资讯
- 樱桃是凉性还是热性的_樱桃属于凉性还是热性的水果呢
- 国际投资者乐观看待中国经济增速目标
- 李小龙女儿
精彩阅读
- 当前快报:3月8日生意社DDGS基准价为2886.67元/吨
- 脚本发生错误怎么办
- 今日关注:通行证办理需要什么材料(如何办理通行证)
- 快看点丨梁家河_说一说梁家河的简介
- 王者荣耀无限火力在哪
- 国内偏僻的高速公路,耗资370亿全长2540公里,却看不到几辆车_每日关注
- 天天新资讯:qq密码申诉的方法
- 怎么限制别人网速手机_怎么限制别人网速
- 娱乐双响炮 每日看点
- 今日时讯:抗原也能测甲流是真的吗 哪些人容易得流感如何预防
- 提神宝能量饮料亮相2023郑州超市采购大会暨零售爆品展览会
- 东方新型冠状病毒肺炎疫情:3月7日东方疫情最新消息今天数据统计情况通报
- 歉疚_全球快资讯
- 留得住,看得好——安徽省阜阳市把“强基层”落到实处|天天日报
- wwe美国职业摔角赛_焦点快播
- 天王嫂不择手段上位记
- 帕雷德斯:未来想回博卡结束职业生涯,但我还可以在欧洲再踢几年|全球热门
- 河南地震带_全球要闻
- 波音747_说一说波音747的简介
- 热讯:胡锡进是什么派_胡锡进是什么人
- 【最新】b计划地球化改造修改器怎么安装(怎么用) 全球观天下
- 观察:中二病患者
- 世界今日讯!2022至2023年供暖时间_北方供暖时间
- 天天日报丨地产暖风吹
- 火把节属于哪个民族
- 白血病血小板指标_血小板低会得白血病吗
- ccf认证
- 【天天新要闻】中国10大名酒排“座次”,只知茅台?行家:不知这几款枉喝白酒!
- 每日头条!海淀百万志愿者开展6大项服务
- 美国注册财务策划师
- 快看:大批咖喱味儿iPhone要来了?曝鸿海拟扩大印度iPhone组装产能
- pdf转成jpg免费_pdf转成jpg
- 达成1200万人就业目标 繁荣的民营经济是最大底气
- 篮球鞋什么牌子好还便宜_篮球鞋什么牌子好|环球通讯
- 《荣耀战争》新手礼包已开放领取
- 红烧肉该不该放辣椒?为什么? 世界今日报
- 焦点日报:中国最大的盆地是什么盆地_中国最大的盆地
- 微淘是什么 视点
- 全球观速讯丨(新华全媒+)“百姓雷锋”
- 喜羊羊与灰太狼大结局
- 什么样的肛门息肉需要手术西宁东大医院做肛门息肉专业可靠吗 焦点关注
- 结的多音字组词_背的多音字组词|环球新动态
- 未来三天北京晴朗在线昼夜温差大 最高气温将升至19℃-焦点速递
- 热点评!车子肇事后报废,拉走要收数千元停车费?
- 春酱的做法
- 陈赫黄晓明关晓彤餐饮公司起诉成都IFS,其运营主体今年也起诉了多家“跑路”公司!-今日热门
- 饿了吧软件谁开发的-世界信息
- 世界热点评!可转债申购后多久上市交易_可转债上市什么时候卖
- 打发时间的软件_打发时间|世界快播报
- 天天热点!一月内四收关注函后,*ST文化70个银行账户又被冻结,内部员工透露“已达成部分债权债务抵偿/豁免事项”