索引创建代码使用官方给的示例代码,我把它在java项目里实现了一遍。

官方示例

1、创建索引

/**
* Java创建Index
*/
public void CreateIndex() {
int i = 0;
List<IndexDomain> list = getIndexList(); for (IndexDomain indexDomain : list) {
if (indexExists(indexDomain.getIndex())) {
continue;
} // create indexDomain, setting, put mapping
adminClient.prepareCreate(indexDomain.getIndex())
.setSettings(Settings.builder()
.put("indexDomain.number_of_shards", indexDomain.getNumber_of_shards())
.put("indexDomain.number_of_replicas", indexDomain.getNumber_of_replicas())
)
.addMapping(indexDomain.getType(), indexDomain.getFieldsJson())
.get(); i++;
}
System.out.println("IndexDomain creation success! create " + i + " IndexDomain");
}

2、附一些其它小方法:

2.1 集群初始化

private Client client;
private IndicesAdminClient adminClient; /**
* 构造方法 单例
*/
public Elasticsearch() {
try {
init();
} catch (Exception e) {
System.out.println("init() exception!");
e.printStackTrace();
}
adminClient = client.admin().indices();
} /**
* 集群配置初始化方法
*
* @throws Exception
*/
private void init() throws Exception {
// 读取配置文件中数据
Properties properties = readElasticsearchConfig();
String clusterName = properties.getProperty("clusterName");
String[] inetAddresses = properties.getProperty("hosts").split(","); Settings settings = Settings.builder().put("cluster.name", clusterName).build(); client = new PreBuiltTransportClient(settings); for (int i = 0; i < inetAddresses.length; i++) {
String[] tmpArray = inetAddresses[i].split(":");
String ip = tmpArray[0];
int port = Integer.valueOf(tmpArray[1]); client = ((TransportClient) client).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip), port));
}
}

2.2 读取ES配置信息

/**
* 读取ES配置信息
*
* @return
*/
public Properties readElasticsearchConfig() {
Properties properties = new Properties();
try {
InputStream is = this.getClass().getClassLoader().getResourceAsStream("elasticsearch.properties");
properties.load(new InputStreamReader(is, "UTF-8"));
} catch (IOException e) {
System.out.println("readEsConfig exception!");
e.printStackTrace();
}
return properties;
}

elasticsearch.properties

hosts: 192.168.33.5:9300,192.168.33.50:9300
clusterName: my-es-analyze

2.3 读取json配置文件

/**
* 读取json配置文件
*
* @return JSONArray
* @throws IOException
*/
public JSONArray readJosnFile() throws IOException {
InputStream is = this.getClass().getClassLoader().getResourceAsStream("index.json");
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sb = new StringBuffer();
String tmp = null;
while ((tmp = br.readLine()) != null) {
sb.append(tmp);
}
JSONArray result = JSONArray.parseArray(sb.toString());
return result;
}

index.json

[
{
"index": "caixiao",
"type": "compensate",
"number_of_shards": 2,
"number_of_replicas": 1,
"fieldsSource": {
"compensate": {
"properties": {
"name": {
"type": "string"
},
"message": {
"type": "string"
},"createtime": {
"type": "date"
}
}
}
}
}
]

2.4 判断集群中索引是否存在

/**
* 判断集群中{Index}是否存在
*
* @param index
* @return 存在(true)、不存在(false)
*/
public boolean indexExists(String index) {
IndicesExistsRequest request = new IndicesExistsRequest(index);
IndicesExistsResponse response = adminClient.exists(request).actionGet();
if (response.isExists()) {
return true;
}
return false;
}

2.5 创建索引实体类

/**
* 获取要创建的index列表
*
* @return List<IndexDomain>
*/
public List<IndexDomain> getIndexList() { List<IndexDomain> result = new ArrayList<IndexDomain>();
JSONArray jsonArray = null;
try {
jsonArray = readJosnFile();
} catch (IOException e) {
System.out.println("readJsonFile exception!");
e.printStackTrace();
} if (jsonArray == null || jsonArray.size() == 0) {
return null;
} for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
IndexDomain indexDomainObject = new IndexDomain();
String index = jsonObject.getString("index");
String type = jsonObject.getString("type");
Integer number_of_shards = jsonObject.getInteger("number_of_shards");
Integer number_of_replicas = jsonObject.getInteger("number_of_replicas");
String fieldsSource = jsonObject.get("fieldsSource").toString(); indexDomainObject.setIndex(index);
indexDomainObject.setType(type);
indexDomainObject.setFieldsJson(fieldsSource);
indexDomainObject.setNumber_of_shards(number_of_shards);
indexDomainObject.setNumber_of_replicas(number_of_replicas);
result.add(indexDomainObject);
}
return result;
}

2.6 索引实体类

public class IndexDomain {
private String index; //索引名
private String type; //type表名
private Integer number_of_shards; //分片数
private Integer number_of_replicas; //备份数
private String fieldsJson; //字段类型 public String getIndex() {
return index;
} public void setIndex(String index) {
this.index = index;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public String getFieldsJson() {
return fieldsJson;
} public void setFieldsJson(String fieldsJson) {
this.fieldsJson = fieldsJson;
} public Integer getNumber_of_shards() {
return number_of_shards;
} public void setNumber_of_shards(Integer number_of_shards) {
this.number_of_shards = number_of_shards;
} public Integer getNumber_of_replicas() {
return number_of_replicas;
} public void setNumber_of_replicas(Integer number_of_replicas) {
this.number_of_replicas = number_of_replicas;
}
}

2.7 log4j2.properties

appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout rootLogger.level = info
rootLogger.appenderRef.console.ref = console

2.8 pom文件依赖

<properties>
<elasticsearch.version>5.3.0</elasticsearch.version>
<log4j.version>2.8.2</log4j.version>
<fastjson.version>1.2.31</fastjson.version>
</properties> <dependencies>
<!-- Elasticsearch -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${elasticsearch.version}</version>
</dependency> <!-- Log4j -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency> <!-- Alibaba Json -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
</dependencies>

Elasticsearch5.x创建索引(Java)的更多相关文章

  1. elasticsearch 5.6.4自动创建索引与mapping映射关系 +Java语言

    由于业务上的需求 ,最近在研究elasticsearch的相关知识 ,在网上查略了大部分资料 ,基本上对elasticsearch的数据增删改都没有太大问题 ,这里就不做总结了  .但是,在网上始终没 ...

  2. [搜索]ElasticSearch Java Api(一) -添加数据创建索引

    转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...

  3. java mongodb 基础系列---查询,排序,limit,$in,$or,输出为list,创建索引,$ne 非操作

    官方api教程:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started ...

  4. ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)

    ElasticSearch6.0  Java API  使用     排序,分组 ,创建索引,添加索引数据,打分等 如果此文章对你有帮助,请关注一下哦 1.1 搭建maven 工程  创建web工程 ...

  5. ElasticSearch(java) 创建索引

    搜索]ElasticSearch Java Api(一) -创建索引 标签: elasticsearchapijavaes 2016-06-19 23:25 33925人阅读 评论(30) 收藏 举报 ...

  6. Elastic Search Java Api 创建索引结构,添加索引

    创建TCP客户端 Client client = new TransportClient() .addTransportAddress(new InetSocketTransportAddress( ...

  7. Java High Level REST Client 之 创建索引

    1. 创建索引请求 CreateIndexRequest request = new CreateIndexRequest("twitter"); 2.设置 2.1 分别设置 2. ...

  8. Solr DIH以Mysql为数据源批量创建索引

    演示使用solr管理后台,以mysql为数据源,批量建索引的方法 测试于:Solr 4.5.1, mmseg4j 1.9.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS ...

  9. lucene创建索引简单示例

    利用空闲时间写了一个使用lucene创建索引简单示例, 1.使用maven创建的项目 2.需要用到的jar如下: 废话不多说,直接贴代码如下: 1.创建索引的类(HelloLucene): packa ...

随机推荐

  1. C#调用VB进行简繁转换

    首先在C#项目中引用Microsoft.VisualBasic.dll,版本自己选择合适的 然后在项目中添加引用:using Microsoft.VisualBasic; 转换: 转为繁体: outp ...

  2. Docker Weave网络部署

    Weave在Docker主机之间实现Overlay网络,使用业界标准VXLAN封装,基于UDP传输,也可以加密传输.Weave Net创建一个连接多个Docker主机的虚拟网络,类似于一个以太网交换机 ...

  3. 2018GIAC全球互联网架构大会上海站最新日程抢先看!

    2018年11月23-24日,为期两天的 GIAC全球互联网架构师大会将在上海拉开帷幕.GIAC全球互联网架构大会是由msup和高可用架构技术社区联合举办的面向架构师.技术负责人及高端技术从业人员的年 ...

  4. python 给字符串加颜色

    msg = '\033[41;1m字符串内容\033[0m' print(msg) # \033[41;1m起始位置 改变41数值就是改变其他颜色,.033[0m 结束位置

  5. Luogu 1603 - 斯诺登的密码 - [简单字符串操作]

    题目链接:https://www.luogu.org/problemnew/show/P1603 题目背景 根据斯诺登事件出的一道水题 题目描述 2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混 ...

  6. 【作业】DS稀疏矩阵

    写了两个小时,书上代码好难看啊 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #in ...

  7. disruptor的并行用法

    实现EventFactory,在newInstance方法中返回,ringBuffer缓冲区中的对象实例:代码如下: public class DTaskFactory implements Even ...

  8. 1、python同级目录及子目录模块引入

    2个模块在同一个包内时(即引入和被引入的2个py文件在同一个目录下),直接引入模块名 1.引入与被引入模块或包在同一目录下时,直接引入模块名或者包名import modulename.py或者impo ...

  9. php获取数据库结构

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Spring加载classpath与classpath*的过程剖析

    使用spring-boot 1.5.7 在resource目录下创建i18n文件夹 使用spring的默认配置没有加载到文件 # INTERNATIONALIZATION (MessageSource ...