| 
					
				 | 
			
			
				@ -2,22 +2,18 @@ package com.yihu.jw.quota.etl.save.es; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.etl.model.EsConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.vo.SaveModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import net.sf.json.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.elasticsearch.client.Client; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.elasticsearch.client.transport.TransportClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.elasticsearch.common.settings.Settings; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.elasticsearch.common.transport.InetSocketTransportAddress; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.searchbox.client.JestClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.searchbox.core.Bulk; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.searchbox.core.BulkResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.searchbox.core.Index; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import net.sf.json.JSONObject;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.context.annotation.Scope; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.elasticsearch.core.query.IndexQuery; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.net.InetAddress; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by chenweida on 2017/6/2. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -26,47 +22,30 @@ import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Scope("prototype") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class ElastricSearchSave { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ElasticsearchTemplate elasticsearchTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private EsConfig esConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void save(List<SaveModel> sms, String jsonConfig) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //初始化链接 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        initTemplate(jsonConfig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //判断索引是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        if (!elasticsearchTemplate.indexExists(esConfig.getIndex())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            //不存在就新增缩影 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            Map<String, String> setting = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            setting.put("number_of_replicas", "2");// 设置备份 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            setting.put("number_of_shards", "6");//设置分片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            elasticsearchTemplate.createIndex(esConfig.getIndex(), setting); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        //判断type是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        if(!elasticsearchTemplate.typeExists(esConfig.getIndex(),esConfig.getType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Logger logger = LoggerFactory.getLogger(ElastricSearchSave.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ElasticFactory elasticFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IndexQuery> queries = new ArrayList<IndexQuery>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel : sms) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IndexQuery indexQuery = new IndexQueryBuilder().withObject(saveModel).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            queries.add(indexQuery); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        elasticsearchTemplate.bulkIndex(queries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private EsConfig esConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void initTemplate(String jsonConfig) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Boolean save(List<SaveModel> sms, String jsonConfig) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //初始化参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            esConfig = (EsConfig) JSONObject.toBean(JSONObject.fromObject(jsonConfig), EsConfig.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Settings esSettings = Settings.settingsBuilder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    .put("cluster.name", esConfig.getClusterName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Client client = TransportClient.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    .settings(esSettings) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    .build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(esConfig.getHost()), Integer.valueOf(esConfig.getPort()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            elasticsearchTemplate = new ElasticsearchTemplate(client); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //得到链接 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JestClient jestClient = elasticFactory.getClient(esConfig.getHost()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Bulk.Builder bulk = new Bulk.Builder().defaultIndex(esConfig.getIndex()).defaultType(esConfig.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (SaveModel obj : sms) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Index index = new Index.Builder(obj).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                bulk.addAction(index); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BulkResult br = jestClient.execute(bulk.build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return br.isSucceeded(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(" save error :" + e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |