elasticsearch java api 使用elasticsearch 6.x.x版本,客戶端使用5.6.10版本


es的添加數據方法中 索引index字段不允許為大寫字符串,必須全部為小寫字符串

public void bulkCreatIndex(){

TransportClient client = es.getClient();

int i = 1;

// bulk單次批操作量
final int BatchSize = 10000;
BulkRequestBuilder bulkRequest = client.prepareBulk();
// 遍歷JSONArray,數據量龐大時,for循環比foreach循環效率更高一些
for (i = 1; i <= jsonArray.size(); i++) {
// setSource為上傳的文本文檔
bulkRequest.add(client.prepareIndex(index.toLowerCase(), type).setSource(jsonArray.getJSONObject(i-1).toString()));
// 每10000條數據執行一次bulk批量操作
if (0 == i % BatchSize) {
bulkRequest.execute().actionGet();
bulkRequest = client.prepareBulk();//此處是bulkRequest執行完成之后會重新創建一個bulkRequest避免下次提交出現重復的數據,如果是一次性全部提交可以不用使用此處
}
}
bulkRequest.execute().actionGet();
bulkRequest = client.prepareBulk();

}

查詢方法

public void search(){

Client client = esmanager.getClient();

RangeQueryBuilder rangequerybuilder = QueryBuilders.rangeQuery("startdate").from(startdate).to(enddate);//建立查詢是所使用條件startdate 從from  startdate開始至enddate結束,

SearchRequestBuilder responsebuilder = client.prepareSearch(index).setTypes(type);//創建查詢使用方法
SearchResponse myresponse = responsebuilder
.setQuery(QueryBuilders.boolQuery().must(rangequerybuilder))//添加查詢條件
.setFrom(from).setSize(size).addSort("startdate", SortOrder.ASC) // 分頁 並且根據startdate進行排序
.setExplain(true).execute().actionGet();
SearchHits hits = myresponse.getHits();//searchhits 為查詢結果相當於jdbc中的ResultSet
for (int i = 0; i < hits.getHits().length; i++) {

hits.getHits()[i].getSourceAsMap().get(key)

}

 根據業務進行方法的修改,本方法制作一個demo參考為主。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM