es java api 创建索引结构_ES15-JAVA API 索引管理

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值