The best Elasticsearch Highlevel Rest Client API-----bboss v5.0.8.2 发布。
主要功能特色
ElasticSearch兼容性:2.x,5.x,6.x,+
JDK兼容性: jdk 1.6+
Spring boot兼容性:1.x,2.x
ORM和DSL二者兼顾,类mybatis方式操作ElasticSearch,支持SQL和JDBC
v5.0.8.2功能改进
1.获取、修改、删除不存在的文档时,处理更加友好,不再抛出异常
获取不存在的文档时,直接返回null,不再抛出异常
修改、删除不存在的文档时,返回不存在的json报文 ,不再抛出异常
2.支持对象直接转json的功能,通过在绑定变量中指定serialJson属性来控制,例如:
#[dynamicPriceTemplate->rules[$velocityCount],serialJson=true]
3.解决DSL绑定变量引用对象属性的值为null时,报空指针异常问题,例如:goodsId为null时,直接输出null,而不是抛出空指针异常
#[dynamicPriceTemplate->goodsId]4.Painless Script 中source/inline可以直接放置绑定变量参数,通过escapeCount属性支持二次转义的功能,脚本配置示例如下:
<property name="scriptPianduan2"> <![CDATA[ "params": { "last": #[last], "nick": #[nick], "goodsId": #[dynamicPriceTemplate->goodsId], "rules":[ #foreach($rule in $dynamicPriceTemplate.rules) #[dynamicPriceTemplate->rules[$velocityCount],serialJson=true] ## 通过属性serialJson指示框架直接将对象序列化为json数据 #if($velocityCount != ($dynamicPriceTemplate.rules.size() - 1)),#end #end ] } ]]> </property> <property name="scriptDslByQuery"> <![CDATA[{ "query": { "bool": { "must": [ { "term": { "_id": #[id] } } ] } }, "script": { "lang": "painless", "source": @""" ctx._source.last = params.last; ctx._source.lastSpecial = "#[last,quoted=false]"; ctx._source.nick = params.nick; ctx._source.goodName = #[dynamicPriceTemplate->goodName,escapeCount=2];#*在脚本中,含有特殊字符的goodName需要转义2次*# ctx._source.goodsId = #[dynamicPriceTemplate->goodsId]; ctx._source.dynamicPriceTemplate.goodsId = params.goodsId; ctx._source.rules = params.rules """, @{scriptPianduan2} } }]]> </property>
执行上面Painless Script的Java代码:ScriptImpl.java
5 解决因为分表日期格式参数elasticsearch.dateFormat没有配置而抛出异常的问题
快速集成和应用参考文档
所有项目集成参考文档:https://my.oschina.net/bboss/blog/1801273
spring boot项目集成参考文档:https://my.oschina.net/bboss/blog/1835601
详细使用文档
https://my.oschina.net/bboss/blog/1556866