1. 程式人生 > >ElasticSearch java api -單例模式

ElasticSearch java api -單例模式

elastic earch request index mmu parse .get 單例 list數據

//單例模式
private static Settings getSettingInstance(){
if(settings==null){
synchronized (Settings.class) {
if(settings==null){
settings = ImmutableSettings.settingsBuilder()
// client.transport.sniff=true
// 客戶端嗅探整個集群的狀態,把集群中其它機器的ip地址自動添加到客戶端中,並且自動發現新加入集群的機器
.put("client.transport.sniff", true).put("client", true)// 僅作為客戶端連接
.put("data", false).put("cluster.name", clustername)// 集群名稱
.build();
}
}
}
return settings;
}
//單例模式
private static TransportClient client;
private static TransportClient getIstance() {
if (client == null) {
//同步代碼塊(對象未初始化時,使用同步代碼塊,保證多線程訪問時對象在第一次創建後,不再重復被創建)
synchronized (TransportClient.class) {
if (client == null) {
client = new TransportClient(getSettingInstance()).addTransportAddress(new InetSocketTransportAddress(hostname, Integer.parseInt(port1)))// TCP
// 連接地址
.addTransportAddress(new InetSocketTransportAddress(hostname, Integer.parseInt(port2)));
}
}
}
return client;
}
/**
* 創建索引 寫入elasticsearch
*
* @param jsonlist
* 要創建索引的jsonlist數據
*/
public static void createIndex(List<JSONObject> jsonlist) {
searchRequestBuilder = getIstance().prepareSearch(index);
try {
// 創建索引
for (int i = 0; i < jsonlist.size(); i++) {
IndexResponse indexResponse = client.prepareIndex(index, type, jsonlist.get(i).getString("id")).setSource(jsonlist.get(i).toString())
.execute().actionGet();
if (indexResponse.isCreated()) {
System.out.println("創建成功!");
} else {
System.out.println("創建失敗!");
}
}
}
catch (Exception e) {
e.printStackTrace();
}

}

ElasticSearch java api -單例模式