ElasticSearch工具类
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;import org.elasticsearch.action.delete.DeleteResponse;import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;import org.elasticsearch.action.support.master.AcknowledgedResponse;import org.elasticsearch.client.IndicesAdminClient;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.TransportAddress;import org.elasticsearch.common.xcontent.XContentType;import org.elasticsearch.transport.client.PreBuiltTransportClient;import java.net.InetAddress;import java.net.UnknownHostException;public class ESUtil { //集群名,默认值elasticsearch private static final String CLUSTER_NAME = "elasticsearch"; //ES集群中某个节点 private static final String HOSTNAME = "node1"; //连接端口号 private static final int TCP_PORT = 9300; //构建Settings对象 private static Settings settings = Settings.builder().put("cluster.name", CLUSTER_NAME).build(); //TransportClient对象,用于连接ES集群 private static volatile TransportClient client; /** * 同步synchronized(*.class)代码块的作用和synchronized static方法作用一样, * 对当前对应的*.class进行持锁,static方法和.class一样都是锁的该类本身,同一个监听器 * @return * @throws UnknownHostException */ public static TransportClient getClient(){ if(client==null){ synchronized (TransportClient.class){ try { client=new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName(HOSTNAME), TCP_PORT)); } catch (UnknownHostException e) { e.printStackTrace(); } } } return client; } /** * 获取索引管理的IndicesAdminClient */ public static IndicesAdminClient getAdminClient() { return getClient().admin().indices(); } /** * 判定索引是否存在 * @param indexName * @return */ public static boolean isExists(String indexName){ IndicesExistsResponse response=getAdminClient().prepareExists(indexName).get(); return response.isExists()?true:false; } /** * 创建索引 * @param indexName * @return */ public static boolean createIndex(String indexName){ CreateIndexResponse createIndexResponse = getAdminClient() .prepareCreate(indexName.toLowerCase()) .get(); return createIndexResponse.isAcknowledged()?true:false; } /** * 创建索引 * @param indexName 索引名 * @param shards 分片数 * @param replicas 副本数 * @return */ public static boolean createIndex(String indexName, int shards, int replicas) { Settings settings = Settings.builder() .put("index.number_of_shards", shards) .put("index.number_of_replicas", replicas) .build(); CreateIndexResponse createIndexResponse = getAdminClient() .prepareCreate(indexName.toLowerCase()) .setSettings(settings) .execute().actionGet(); return createIndexResponse.isAcknowledged()?true:false; } /** * 位索引indexName设置mapping * @param indexName * @param typeName * @param mapping */ public static void setMapping(String indexName, String typeName, String mapping) { getAdminClient().preparePutMapping(indexName) .setType(typeName) .setSource(mapping, XContentType.JSON) .get(); } /** * 删除索引 * @param indexName * @return */ public static boolean deleteIndex(String indexName) { // DeleteResponse response = client.prepareDelete("twitter", "_doc", "1").get();// DeleteResponse deleteResponse = getAdminClient()// .prepareDelete(indexName.toLowerCase())// .get();// DeleteResponse response = getAdminClient().prepareDelete(indexName).get(); AcknowledgedResponse response = getAdminClient().prepareDelete(indexName).get();// DeleteResponse response = getClient().prepareDelete().get(); return response.isAcknowledged()?true:false; }}