Easy-Es 2.0-Beta 一代战神横空出世!
大战前夕: 接上回(1.0),却说老汉自上回Push*一战,取得ES首级,献于祖师爷青苗(MP作者),自此声名大燥。怎奈ES那厮并非好惹之怨种,都言虎父无犬子,ES那厮有三个义子,各个生身怀绝技,长子RestLowLevelClient唤作道邢荣将军,次子RestHighLevelClient唤作潘凤上将,三子es8唤作刘三刀校尉。鉴于长子年迈,三子年幼,为父报仇之重任落于次子。 
打得那凤姐,叽里又呱啦!老汉乘机生擒凤姐,得意忘形,迈出了魔鬼地步伐,"俺说了俺只需略微出手,就已知此分段之极限矣,那年俺双手插兜,不知甚是对手"! 凤姐心中颇为不服,口吐芬芳:这糟老头子坏得很,老夫今日误中其奸计矣。 老汉言:“年轻人,讲锤子武德”,并再次仰天长啸:犯我大汉者,虽远必猪,呜呼ES,EASY哉!自此EASY-ES正式进迈入2.0-beta时代,天下码农再享太平!

《战神&小趴菜》
一邢二潘刘三刀,四方五穆武安国。 俞涉苟安蒋子翼,二蔡韩玄夏侯楙。 长坂一声夏侯杰,完体将军淳于琼。 三国十七将帅才,皆是老汉碟中菜!
2.0beta1究竟有何能耐,能将号称与吕布齐名,“冀州第一无双大将”潘凤生擒?下面由老汉带领大家一睹EE2.0beta1过人之处! (官人且莫走,文末有彩蛋)
本次2.0beta1分别从以下几个方面给大家带来了惊喜:
- 支持四大嵌套查询并可以无级嵌套(版本最大特性)
| MySQL | Mybatis-Plus | ES | Easy-Es |
|---|---|---|---|
| and 拼接 | 默认 | must | 默认 |
| or 拼接 | or() | should | or() |
| filter 拼接 | 无 | filter | filter() |
| not 拼接 | 无 | must_not | not() |
直观对比:
// MySQL语法
where business_type = 1
and (state = 9 or (state = 8 and bidding_sign = 1))
or (business_type = 2 and state in (2,3));
// Easy-Es及Mybatis-Plus语法
wrapper.eq("business_type", 1)
.and(a -> a.eq("state", 9).or(b -> b.eq("state", 8).eq("bidding_sign", 1)))
.or(i -> i.eq("business_type", 2).in("state", 2, 3));
// ES原生的RestHighLevel语法
List<Integer> values = Arrays.asList(2, 3);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.termQuery("business_type", 1));
boolQueryBuilder.must(QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("state", 9))
.should(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("state", 8))
.must(QueryBuilders.termQuery("bidding_sign", 1))));
boolQueryBuilder.should(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("business_type", 2))
.must(QueryBuilders.termsQuery("state", values)));
上面的例子树的最大深度仅为2,如果深度超过2以后ES原生语法就很难看得懂了,更别说正确编码,就算您是ES老手也容易栽坑里,但现在你可以通过EE 1:1轻松又简单还原复杂SQL.
2.支持全部nestedQuery 丰富了1.0中nested类型的功能支持,在1.0中仅支持nestedMacht但在2.0中所有es能支持的nestedQuery都能开箱即用,采用Lambda语法构造,使用非常简单.
3.引入各种智能化套件,能从框架自动推断的绝不麻烦用户指定,进一步减少小白踩坑的可能. 索引创建时默认的字段类型由keyword调整为text_keyword双类型,并且在查询时会根据查询类型和注解配置的类型自动智能决策是否拼接.keyword后缀; 距离的获取支持多排序器功能,并且不再需要用户手动指定排序迭代器位置,由框架全自判断处理;
4.其它...共计10余项新功能特性以及10余项优化改进和1项缺陷修复,可以在文末前往官网查看详情!
结语 2023华灯初上,万家灯火却没有一盏为我而明,快乐都是你们的,而我只有大把空闲时间可以深度思考,解决了困扰一年的算法问题,至此2.0版本至少提前半年与诸位见面,还望不吝点个Star,支持一波,聊以慰藉我逝去的大年,最后恭祝各位点亮的将军,钱财兔如奇来,技术兔飞猛进,撸码兔起鹘落!也祝看完没点亮小星星的道荣将军们,新的一年像刚发动的拖拉机一样,兔秃秃秃tututu...
《彩蛋》
三刀听闻大哥被生擒,急诏左右文武,倾举国之力,咬碎钢牙,誓必报殺父之仇与擒兄之恨。 这边老汉闻之,言敌众我寡,若不能聚天下之贤良,吾命将休矣,吓得屁滚尿流,急向天下布告:
《诏书》 
