/**
* 查詢所有資料
** @param index 索引名稱
* @param type type 6.0後不推薦使用
* @param fields 需要顯示的字段
* @param sortfield 需要進行排序的字段
* @param highlightfield 需要高亮的字段
* @param querybuilder 查詢條件
* @return
*/public static list> searchalldata(string index, string type, string fields, string sortfield, string highlightfield,querybuilder querybuilder )
// 需要顯示的字段,逗號分隔(預設為全部字段)
if (stringutils.isnotempty(fields))
searchrequestbuilder.setfetchsource(true);
if (stringutils.isnotempty(sortfield))
//設定每批讀取的資料量
searchrequestbuilder.setsize(100);
//查詢條件
searchrequestbuilder.setquery(querybuilder);
//設定 search context 維護1分鐘的有效期
searchrequestbuilder.setscroll(timevalue.timevalueminutes(1));
//獲得首次的查詢結果
searchresponse scrollresp=searchrequestbuilder.get();
//列印的內容 可以在 elasticsearch head 和 kibana 上執行查詢
logger.info("\n{}", searchrequestbuilder);
//列印命中數量
logger.info("命中總數量:{}", scrollresp.gethits().gettotalhits());
list> sourcelist = new arraylist>();
stringbuffer stringbuffer = new stringbuffer();
do //遍歷 高亮結果集,覆蓋 正常結果集
searchhit.getsourceasmap().put(highlightfield, stringbuffer.tostring());}}
}sourcelist.add(searchhit.getsourceasmap());
}//當searchhits的陣列為空的時候結束迴圈,至此資料全部讀取完畢
} while(scrollresp.gethits().gethits().length != 0);
//刪除scroll
clearscrollrequest clearscrollrequest = new clearscrollrequest();
clearscrollrequest.addscrollid(scrollresp.getscrollid());
client.clearscroll(clearscrollrequest).actionget();
return sourcelist;
}
Elasticsearch如何更新mapping
既然已建立的 indices 無法修改,我們可以重新建立乙個新的 indices,然後將原 indices 上的資料複製到新的 indices 上,再將 alias 指向新 indices。最後,刪除原索引。引數說明 當前索引名稱 test v1 生產索引名稱 test 目標索引名稱 test v2...
如何防止ElasticSearch集群出現腦裂現象
什麼是 腦裂 現象?由於某些節點的失效,部分節點的網路連線會斷開,並形成乙個與原集群一樣名字的集群,這種情況稱為集群腦裂 split brain 現象。這個問題非常危險,因為兩個新形成的集群會同時索引和修改集群的資料。如何避免腦裂問題?避免腦裂現象,用到的乙個引數是 discovery.zen.mi...
elasticsearch如何安全重啟節點 續
大岩不燦 發表於 2015年9月21日 瀏覽 1,086 次 之前分享的一篇文章介紹了如何滾動rolling重啟elasticsearch集群。但是當資料量很大的時候,可能那種方式並不適合修改整個集群的配置。如果你無法通過api更改集群屬性,還是建議你把整個集群關閉,重啟整個集群。重啟步驟如下 1 ...