实战 | 一步步排查基于业务场景的Elasticsearch难题!

robinent
发布于 2022-4-29 14:41
浏览
0收藏

1、题记


我们在实际的业务场景中做Elasticsearch开发时,免不了遇到这样、那样的问题。
死磕Elasticsearch方法论》中,已经告诉大家相关问题的排查方法。
这一节,我们以具体的示例,解决基于业务场景的Elasticsearch难题的方法?

 

2、上问题

实战 | 一步步排查基于业务场景的Elasticsearch难题!-鸿蒙开发者社区3、搜索已有知识储备


步骤1:脑海中显现:ES中有哪些数据类型?ES支持哪些数据类型。
此处,我个人认为,没必要记住。
但是,要知道,从哪里查?
记住,查询方法如下:
在Google或者Bing国际版输入:“elasticsearch data type”
相关链接:http://t.cn/REjyfxa

实战 | 一步步排查基于业务场景的Elasticsearch难题!-鸿蒙开发者社区

参考:
http://t.cn/RcWM2Py

 

步骤4:如何获取日期中指定的年、月、日检索?
能想到的是什么呢——的确,我也没这么用过。
注意:此时一定要用英文去检索。
在Google或者Bing国际版或者Stackoverflow中输入:“elasticsearch date get month“。

 

看看网友的思路:
返回如下:
http://t.cn/REjVkGW
http://t.cn/REjfh8z

 

初步,确定解决方案。
结合:script检索+ getDate().getMonthOfYear()接口实现条件检索。

 

4、敲黑板——知识点


1、script检索
一种基于 Painless脚本语言的检索, Painless 脚本语言是简单、安全应用于Elasticsearch中的脚步语言。
应用举例:

实战 | 一步步排查基于业务场景的Elasticsearch难题!-鸿蒙开发者社区

2、时间的返回接口
getDate().getMonthOfYear()

 

注意:
date.getMonthOfYear() == 11 返回11月;
date.getDayOfMonth() == 11 返回11日。

 

5、如何实现呢?


基于之前的分析,我的思路:
第一步:获取月;
第二步:获取日;
第三步:二者与。

 

具体实现:

实战 | 一步步排查基于业务场景的Elasticsearch难题!-鸿蒙开发者社区返回结果:
实际业务中,我以12月,23日作为检索条件验证的,我用的系统中没有11月11日的数据。

实战 | 一步步排查基于业务场景的Elasticsearch难题!-鸿蒙开发者社区

6、小结


1.对于不熟悉的业务场景,可以通过检索英文关键词,通过Google、stackoverflow等最快找到解决方案。此处,切记:不要盲目用中文检索。
2.使用完以后,一定要形成知识点总结,便于以后的触类旁通。

 

参考:脚本检索——

 

http://t.cn/R3nxhwW

 

7、这就完了吗?


有没有更便捷的方法。
这里,后期检索的时候,发现如下不需要bool检索的更高效的解决方案:
https://goo.gl/EhtJA2

实战 | 一步步排查基于业务场景的Elasticsearch难题!-鸿蒙开发者社区

 

分类
收藏
回复
举报
回复
    相关推荐