文档章节

ES16-JAVA API 索引管理

贾峰uk
 贾峰uk
发布于 07/22 22:45
字数 479
阅读 6
收藏 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
粉丝 1
博文 84
码字总数 127670
作品 0
深圳
私信 提问
9个基于Java的搜索引擎框架

9个基于Java的搜索引擎框架 [导读] Lucene是目前最受欢迎的Java全文搜索框架,准确地说,它是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene为开发人员...

引鸩怼孑
2015/07/30
0
0
《Java从小白到大牛》之第9章 字符串

《Java从小白到大牛》纸质版已经上架了!!! 由字符组成的一串字符序列,称为“字符串”,在前面的章节中也多次用到了字符串,本章将重点介绍。 Java中的字符串 {#java} Java中的字符串是由...

tony关东升
07/11
0
0
Solr Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)

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

David_Tio
2013/12/05
0
0
用php来实现lucene包来实现全文检索

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

安安-Anan
2015/08/12
0
0
从java1到java9每个版本都有什么新特性?五分钟了解

     其实,我是个标题党,没有java1的说法,java9的新特性我也没总结。所以,来个关注吧,说不定哪天就出了呢。。。   每次出新版本,大家大概都会这么问,“Java X会有什么特性呢?”...

java进阶架构师
2017/11/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ViewPager系列之软件主页面切换制作

效果图:ViewPager制作的页面能左右滑动,而Fragment制作的页面却不能左右滑动。 代码: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.......

鱼想吃肉
23分钟前
2
0
大话后端开发的奇淫技巧大集合

Hi,大家好,很荣幸有这个机会可以通过写博文的方式,把这些年在后端开发过程中总结沉淀下来的经验和设计思路分享出来 模块化设计 根据业务场景,将业务抽离成独立模块,对外通过接口提供服务...

James-
24分钟前
1
0
函数

1、函数的定义:从function关键字开始,后面跟随{ (1)函数名字 (2)圆括号 (3)花括号 } function arr() {}

墨冥
25分钟前
1
0
ZABBIX 3.4 (一) 监测Nginx状态及脚本

ZABBIX 3.4 (一) 监测Nginx状态及脚本 2018年08月31日 16:56:48 YoFog 阅读数:106 标签: zabbix agentzabbix nginxnginx_status监控nginxzabbix脚本更多 个人分类: 运维 版权声明:本文...

linjin200
26分钟前
2
0
Spring 之 IOC 初始化总结

IOC 容器的初始化过程分为三步骤: Resource 定位 BeanDefinition 的载入和解析 BeanDefinition 注册 Resource 定位。我们一般用外部资源来描述 Bean 对象,所以在初始化 IOC 容器的第一步就...

专业搬砖工程师
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部