说实话, java的方式太繁琐, 不如直接使用DSL进行创建

1, create

package com.wenbronk.elasticsearch.usage.index;

import com.wenbronk.elasticsearch.usage.highLevel.RestHighLevelClientParent;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.support.ActiveShardCount;
import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.rest.RestStatus;
import org.junit.jupiter.api.Test; import java.io.IOException; public class Index_1_Create extends RestHighLevelClientParent { /**
* index 使用java客户端不好创建, 可以在kibana中进行创建
* 注意mapping一旦创建, 不可更改
*/
@Test
public void createIndices() throws IOException { CreateIndexRequest request = new CreateIndexRequest("twitter"); // add partition
request.source("{\n" +
" \"settings\" : {\n" +
" \"number_of_shards\" : 3,\n" +
" \"number_of_replicas\" : 2\n" +
" },\n" +
" \"mappings\" : {\n" +
" \"tweet\" : {\n" +
" \"properties\" : {\n" +
" \"message\" : { \"type\" : \"text\" }\n" +
" }\n" +
" }\n" +
" },\n" +
" \"aliases\" : {\n" +
" \"twitter_alias\" : {}\n" +
" }\n" +
"}", XContentType.JSON); // 配置可选参数
request.timeout(TimeValue.timeValueMinutes());
// request.timeout("2m");
request.masterNodeTimeout(TimeValue.timeValueMinutes());
// request.masterNodeTimeout("1m");
// request.waitForActiveShards(2);
request.waitForActiveShards(ActiveShardCount.DEFAULT); // 使用异步的方式创建
client.indices().createAsync(request, new ActionListener<CreateIndexResponse>() {
@Override
public void onResponse(CreateIndexResponse createIndexResponse) {
boolean acknowledged = createIndexResponse.isAcknowledged();
boolean shardsAcknowledged = createIndexResponse.isShardsAcknowledged();
} @Override
public void onFailure(Exception e) {
System.out.println(e.getCause());
}
});
} }

2, delete

package com.wenbronk.elasticsearch.usage.index;

import com.wenbronk.elasticsearch.usage.highLevel.RestHighLevelClientParent;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.rest.RestStatus;
import org.junit.jupiter.api.Test; public class Index_2_Delete extends RestHighLevelClientParent { @Test
public void deleteIndices() {
DeleteIndexRequest request = new DeleteIndexRequest("twitter"); request.timeout(TimeValue.timeValueMinutes());
// request.timeout("2m");
// request.masterNodeTimeout("1m");
request.masterNodeTimeout(TimeValue.timeValueMinutes());
request.indicesOptions(IndicesOptions.lenientExpandOpen()); client.indices().deleteAsync(request, new ActionListener<DeleteIndexResponse>() {
@Override
public void onResponse(DeleteIndexResponse deleteIndexResponse) {
boolean acknowledged = deleteIndexResponse.isAcknowledged();
} @Override
public void onFailure(Exception e) {
ElasticsearchException ee = (ElasticsearchException) e;
if (ee.status() == RestStatus.NOT_FOUND) {
System.out.println("indices not found");
}
}
}); } }

3, exists

package com.wenbronk.elasticsearch.usage.index;

import com.wenbronk.elasticsearch.usage.highLevel.RestHighLevelClientParent;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.admin.indices.get.GetIndexRequest; public class Index_3_exists extends RestHighLevelClientParent { public void testExists() {
GetIndexRequest request = new GetIndexRequest();
request.indices("twitter"); // 可选参数:
request.local(false);
request.humanReadable(true);
request.includeDefaults(false);
// request.indicesOptions(indicesOptions); client.indices().existsAsync(request, new ActionListener<Boolean>() {
@Override
public void onResponse(Boolean aBoolean) {
System.out.println(aBoolean);
} @Override
public void onFailure(Exception e) { }
});
}
}

4, mapping

package com.wenbronk.elasticsearch.usage.index;

import com.wenbronk.elasticsearch.usage.highLevel.RestHighLevelClientParent;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType; public class Index_4_mapping extends RestHighLevelClientParent { public void testPutMapping() { PutMappingRequest request = new PutMappingRequest("twitter");
request.type("tweet"); request.source(
"{\n" +
" \"properties\": {\n" +
" \"message\": {\n" +
" \"type\": \"text\"\n" +
" }\n" +
" }\n" +
"}",
XContentType.JSON); // 可选参数
request.timeout(TimeValue.timeValueMinutes());
// request.timeout("2m");
request.masterNodeTimeout(TimeValue.timeValueMinutes());
// request.masterNodeTimeout("1m"); client.indices().putMappingAsync(request, new ActionListener<PutMappingResponse>() {
@Override
public void onResponse(PutMappingResponse putMappingResponse) {
boolean acknowledged = putMappingResponse.isAcknowledged();
System.out.println(acknowledged);
} @Override
public void onFailure(Exception e) { }
});
} }

还是原DSL好用

es-06-java创建mapping和setting的更多相关文章

  1. 关闭ES动态创建mapping

    使用ES的默认配置会使我们在索引不存在于mapping中的字段时,会自动创建. 这无疑会给我们带来困扰. 在我们不想要某个字段被搜索的时候,我们可以在开始关闭动态创建mapping. 执行如下操作: ...

  2. Elasticsearch索引的操作,利用kibana 创建/删除一个es的索引及mapping映射

    索引的创建及删除 1. 通过索引一篇文档创建了一个新的索引 .这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射. 利用Kibana提供的DevTools来执行命令,要创建一个索引 ...

  3. ES 06 - 通过Kibana插件增删改查ES中的索引文档

    目录 1 document的结构 2 document的常见CRUD操作 2.1 添加商品: 添加文档并建立索引 2.2 查询商品: 检索文档 2.3 修改商品: 替换文档 2.4 修改商品: 更新文 ...

  4. 056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用

    056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用 本文知识点:数组的实际应用 程序开发中如何应用数组? 程序代码及其运行结果: 不同数据类 ...

  5. 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念

    055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...

  6. 054 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 01 数组概述

    054 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 01 数组概述 本文知识点:数组概述 为什么要学习数组? 实际问题: 比如我们要对学生的成绩进行排序,一个班级 ...

  7. java创建文件和目录

    java创建文件和目录 2013-09-04 12:56 99933人阅读 评论(7) 收藏 举报  分类: JAVA基础(10)  版权声明:本文为博主原创文章,未经博主允许不得转载. 创建文件和目 ...

  8. JAX-WS(一)之使用wsgen从Java创建简单的WebService

    概念 JAX-WS2.0的全称Java API for XML-Based Web Service 2.0.JAX-WS2.0是对JAX-RPC1.0规范的扩展,是JAX-RPC1.1的后续版本,JA ...

  9. 【Java】Java创建String时,什么情况放进String Pool?

    对Java创建String是否放入String pool作代码性的试验. 参考的优秀文章 JAVA面试题解惑系列(二)——到底创建了几个String对象? public String(String o ...

随机推荐

  1. 将电脑信息上传到中国移动ONENET平台

    用两个小时做的 可以用在服务器远程运维等环境非常方便 需要源码的可以联系NBDX123

  2. POJ2229--Sumsets(动态规划)

    Farmer John commanded his cows to search for different sets of numbers that sum to a given number. T ...

  3. vc6中向vs2010迁移的几个问题(2)

    1. 库文件的迁移 参考:http://www.cnblogs.com/icmzn/p/6724969.html 2. 其他项目中的可能遇到的问题: 2.1 无法打开包括文件:“fstream.h”: ...

  4. 3.java面向对象编程三大特性之多态

    面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对类的外部而言它的内部实现细节是隐藏的,暴露给外界的只是它的实现方法. ...

  5. Eclipse运行wordcount步骤

    Eclipse运行wordcount步骤 第一步:建立工程,导入代码. 第二步:建立文件写入数据(以空格分开),并上传到hdfs上. 1.创建文件并写入数据: 2.上传hdfs 在hadoop权限下就 ...

  6. Django 数据生命周期

  7. CentOS下下载软件,不安装的方法

    今天来说下在CentOS下下载软件,不安装的方法: 方法一:通过yum自带一个工具:yumdownloader[root@web1 ~]#  rpm -qa |grep yum-utils[root@ ...

  8. Crontab有关

    AIX下面 0,2,4,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,58 * * * * /usr/s ...

  9. asp.net core sdk & runtime 镜像[已更新至2.2.0]

    在官方镜像的脚本上, 增加了System.Drawing相关的依赖库 以北京时间为默认的时间 2.2.0 Windows SDK地址: 官方: https://dotnetcli.blob.core. ...

  10. C# 日志输出工具库—log4net 安装、配置及简单应用

    1.下载和安装 注意每次安装只是安装到本项目中,换了另一个项目需要再次安装和配置. 我使用的是Visual Studio 2013 社区版,在tools中找到NuGet包管理. 搜索log4net并点 ...