文档章节

ES16-JAVA API 索引管理

贾峰uk
 贾峰uk
发布于 2018/07/22 22:45
字数 479
阅读 9
收藏 0

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());

	}
}

 

© 著作权归作者所有

共有 人打赏支持
下一篇: ES15-聚合
贾峰uk
粉丝 2
博文 89
码字总数 139027
作品 0
深圳
私信 提问
OpenJWeb Java技术门户网运营公告

OpenJWeb Java技术门户网地址为http://www.openjweb.com:8088/crm ,此网站于2010年2月16日正式启用。 OpenJWeb Java技术门户网主要提供Java架构学习、Java开源框架技术交流、OpenJWeb技术资料...

迷途d书童
2012/03/09
177
0
Infinispan 8.0.0.Final 正式版发布

Infinispan 8.0.0.Final 正式版发布了,这是一个最棒的版本,数字 8 代表第一在 Logo 中的嵌入,其二是代码完全迁移到 Java 8 上开发。 Infinispan 8 给我们带来: 全新的函数风格的 API 用于...

红薯
2015/09/01
2.9K
5
用php来实现lucene包来实现全文检索

因为PHP本身就支持调用外部Java类,所以先用Java写了一个类, 这个类通过调用Lucene的API,实现了两个方法: public String createIndex(String indexDirpath,String dataDirpath) public S...

安安-Anan
2015/08/12
0
0
Solr Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)

Apache Solr 介绍 Solr 是什么? Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是...

David_Tio
2013/12/05
0
0
用PHP调用Lucene包来实现全文检索

原文出处:http://www.chinaunix.net/jh/27/754161.html 由于工作需要,需要使用PHP实现对网站内大量数量进行全文检索, 而且目前最流行的全文检索的搜索引擎库就是Lucene了, 它是Apache Ja...

红薯
2011/10/08
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

Temp-Memo

Recommended Ref : SQL High CPU troubleshooting checklist -- Top 50 SQL highly consuming cpuSELECT TOP 50[Avg. MultiCore/CPU time(sec)] = qs.total_worker_time / 1000000 / qs......

Goopand
22分钟前
1
0
dotConnect for Oracle入门指南(七):存储过程

【下载dotConnect for Oracle最新版本】 dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提供完整的解决方案。它为设计应用程序结构带来了新的...

电池盒
24分钟前
2
0
如何使用阿里云ARMS轻松重现用户浏览器问题

客户投诉不断,本地却无法重现? 页面加载较慢是用户经常会反馈的问题,也是前端非常关注的问题之一。但定位、排查解决这类问题就通常会花费非常多的时间,主要原因如下: 页面是在用户端的浏...

阿里云官方博客
28分钟前
1
0
因资源用尽导致服务宕机

1. 事故的发生 服务调用场景和发生的事件如下图所示,红色表示服务不可用. 服务A和服务B都是内部服务,服务C_*为不同运营商提供的服务,遵循一样的协议。 某一天,突然发现所有服务A调用服务...

北风刮的不认真了
32分钟前
3
0
锤子科技"临死前"被"接盘" ,内部人士爆料已改签今日头条母公司

就在昨天,据据锤子科技内部人士透露,部分锤子科技员工在昨天已经接到了相关的临时通知,要求改签劳动合同至今日头条的母公司——字节跳动。至于这是锤子科技真正再度复活还是借尸还魂都不重...

终端研发部
41分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部