文档章节

ES16-JAVA API 索引管理

贾峰uk
 贾峰uk
发布于 07/22 22:45
字数 479
阅读 4
收藏 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());

	}
}

 

© 著作权归作者所有

共有 人打赏支持
贾峰uk
粉丝 0
博文 76
码字总数 111991
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
40分钟前
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
52分钟前
0
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
0
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部