1.创建连接
创建连接demo
package com.sean.esapi.client;
import java.net.InetSocketAddress;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
public class ClientDemo {
public static void main(String[] args) {
// 设置集群名称
Settings settings = Settings.builder().put("cluster.name", "secms-elk").build();
// 创建client链接es
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(new InetSocketAddress("192.168.1.112", 9300)));
//查询指定文档数据
GetResponse response = client.prepareGet("sfpay_log", "waf", "1").get();
//输出结果
System.out.println(response.getSourceAsString());
//关闭链接
client.close();
}
}
2.索引管理
package com.sean.esapi.client;
import java.net.InetAddress;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
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;
public class ESIndexUtil {
private static final String CLUSTER_NAME = "secms-elk";
private static final String HOST = "192.168.1.112";
private static final Integer PORT = 9300;
private static Settings settings = Settings.builder().put("cluster.name", CLUSTER_NAME).build();
private static volatile TransportClient client;
/**
* 获取客户端
*
* @return
*/
public static TransportClient getClient() {
if (client == null) {
synchronized (ESIndexUtil.class) {
try {
client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName(HOST), PORT));
} catch (Exception e) {
e.printStackTrace();
}
}
}
return client;
}
/**
* 获取索引管理客户端
*
* @return
*/
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();
}
/**
* 创建索引
*
* @param indexName
* @return
*/
public static boolean createIndex(String indexName) {
CreateIndexResponse response = getAdminClient().prepareCreate(indexName).get();
return response.isAcknowledged();
}
/**
* 创建索引
*
* @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 response = getAdminClient().prepareCreate(indexName).setSettings(settings).execute()
.actionGet();
return response.isAcknowledged();
}
/**
* 为索引设置mapping
*
* @param indexName
* 索引名称
* @param type
* @param mapping
*/
public static void setMapping(String indexName, String type, String mapping) {
getAdminClient().preparePutMapping(indexName).setType(type).setSource(mapping, XContentType.JSON).get();
}
/**
* 删除索引
*
* @param indexName
* @return
*/
public static boolean deleteIndex(String indexName) {
DeleteIndexResponse response = getAdminClient().prepareDelete(indexName).execute().actionGet();
return response.isAcknowledged();
}
}
demo测试
package com.sean.esapi.client;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
public class IndexDemo {
public static void main(String[] args) throws Exception {
// 判定索引是否存在
boolean isExist = ESIndexUtil.isExists("sfpay_log");
System.out.println(isExist);
// 创建索引
boolean isCreated = ESIndexUtil.createIndex("cailianpress", 5, 2);
System.out.println(isCreated);
// 设置mapping
XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.startObject("properties")
.startObject("title")
.field("type","text")
.field("analyzer","ik_max_word")
.endObject()
.startObject("content")
.field("type","text")
.field("analyzer","ik_max_word")
.endObject()
.startObject("pubdate")
.field("type","date")
.field("format","yyyy-MM-dd HH:mm")
.endObject()
.endObject()
.endObject();
System.out.println(builder.string());
//设置mapping
ESIndexUtil.setMapping("cailianpress","msg",builder.string());
}
}
转载至链接:https://my.oschina.net/u/3100849/blog/1861104