The best Elasticsearch Highlevel Rest Client API-----bboss v5.9.2 發布。
bboss elasticsearch 是一套基 於query dsl 語法操作和訪問分散式搜索引擎 elasticsearch 的 o/r mapping 高性能java開發庫,底層基於 es restful api。
ElasticSearch兼容性:1.x,2.x,5.x,6.x,7.x,+
JDK兼容性: jdk 1.7+
Spring boot兼容性:1.x,2.x
ORM和DSL二者兼顧,類mybatis方式操作ElasticSearch,
提供快速而高效的數據同步導入ES工具(支持DB到Elasticsearch,Elasticsearch到DB,MongoDB到Elastisearch數據同步,後續將支持更多的數據源)
提供按時間日期ES歷史數據清理工具
https://github.com/naver/pinpoint/tree/master/plugins/elasticsearch-bboss
1.增加MetaMap類:MetaMap繼承HashMap,為map 增加meta元數據相關的屬性信息,參考示例:
//創建批量創建文檔的客戶端對象,單實例多線程安全
ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil();
//單文檔檢索
MetaMap newDemo = clientUtil.getDocument("demo",//索引表
"demo",//索引類型
"1",//文檔id
MetaMap.class
);
//列印metamap和返回的文檔元數據信息
System.out.println(newDemo);
System.out.println("getId:"+newDemo.getId());
System.out.println("getIndex:"+newDemo.getIndex());
System.out.println("getNode:"+newDemo.getNode());
System.out.println("getShard:"+newDemo.getShard());
System.out.println("getType:"+newDemo.getType());
System.out.println("getExplanation:"+newDemo.getExplanation());
System.out.println("getFields:"+newDemo.getFields());
System.out.println("getHighlight:"+newDemo.getHighlight());
System.out.println("getInnerHits:"+newDemo.getInnerHits());
System.out.println("getNested:"+newDemo.getNested());
System.out.println("getPrimaryTerm:"+newDemo.getPrimaryTerm());
System.out.println("getScore:"+newDemo.getScore());
System.out.println("getSeqNo:"+newDemo.getSeqNo());
System.out.println("getVersion:"+newDemo.getVersion());
System.out.println("getParent:"+newDemo.getParent());
System.out.println("getRouting:"+newDemo.getRouting());
System.out.println("getSort:"+newDemo.getSort());
System.out.println("isFound:"+newDemo.isFound());
//列表檢索
ESDatas<MetaMap> data //ESDatas為查詢結果集對象,封裝了返回的當前查詢的List<TAgentInfo>結果集和符合條件的總記錄數totalSize
= clientUtil.searchList("trace-*/_search",//查詢操作,查詢indices trace-*中符合條件的數據
"queryServiceByCondition",//通過名稱引用配置文件中的query dsl語句
parmas,//查詢條件,Map<key,value>
MetaMap.class);//指定返回的po對象類型,po對象中的屬性與indices表中的文檔filed名稱保持一致
//獲取結果對象列表
List<MetaMap> demos = data.getDatas();
//獲取總記錄數
long totalSize = data.getTotalSize();
2.修復自定義啟動客戶端問題:設置數字參數和boolean參數不起作用
3.數據同步工具:增加mongodb到elasticsearch同步功能,工具demo:
https://github.com/bbossgroups/mongodb-elasticsearch
參考文檔:mongodb-elasticsearch數據同步使用方法
4.數據同步工具改進:如果同步欄位中包含名稱為_id的屬性,則忽略之,否則會導致數據無法正常導入Elasticsearch
5.增加慢請求服務調用日誌信息採集功能,可以將慢dsl列印到日誌文件或者發送給接收慢dsl的回調介面函數
增加兩個參數:
elasticsearch.slowDslThreshold(慢dsl時間條件參數 )和 elasticsearch.slowDslCallback(接收慢dsl的介面配置)
slowDslThreshold單位:ms 毫秒
elasticsearch.slowDslThreshold=10000
spring boot配置項
spring.elasticsearch.bboss.elasticsearch.slowDslThreshold=10000
指定接收慢dsl的回調介面函數slowDslCallback,便於自行處理慢dsl信息
public interface SlowDslCallback {
void slowDslHandle( SlowDsl slowDsl);
}
slowDslCallback配置:
elasticsearch.slowDslCallback=org.bboss.elasticsearchtest.crud.TestSlowDslCallback
spring boot配置項
spring.elasticsearch.bboss.elasticsearch.slowDslCallback=org.bboss.elasticsearchtest.crud.TestSlowDslCallback
如果沒有指定回調處理介面,將直接列印警告信息到日誌文件,WARN級別 , 如果dsl過長,需要截取掉部分內容再列印到日誌文件中:超過2048的dsl將被截取掉超過的內容,替換為.....,否則調用SlowDslCallback介面方法slowDslHandle傳遞慢dsl的相關信息:
6.數據同步工具改進:完善增量數據同步機制,增量欄位無需排序即可實現增量同步功能,提升同步性能,改進後部分類(比如Context)包路徑做了調整,但是api完全兼容,可以到以下地址下載改進后最新的工具:
jdk timer和quartz demo工程 https://github.com/bbossgroups/db-elasticsearch-tool
xxl-job demo工程 https://github.com/bbossgroups/db-elasticsearch-xxjob
7.數據同步工具bug修復:解決增量同步狀態更新可能存在的不正確問題
8.數據同步工具改進:增加數據同步監控指標數據的採集,參考文檔:數據同步任務執行統計信息獲取
9.數據同步工具新增功能:elasticsearch到db的數據同步功能,支持全量、增量定時同步,內置jdk timer同步器,支持quartz、xxl-job任務調度引擎,使用參考:
10.簡化數據同步程序開發調試工作:可以直接在同步程序的main中方法進行同步功能開發和調試
11.Scroll/Slice scroll檢索功能改進:支持在hanlder結果回調處理函數中中斷scroll/slice croll的執行,參考文檔:
https://esdoc.bbossgroups.com/#/Scroll-SliceScroll-api
12.json庫fastjackson升級到2.10.0
Elasticsearch bboss版本變更記錄
[admin
]