es-06-java创建mapping和setting

摘要:
说实话,java的方式太繁琐,不如直接使用DSL进行创建1,createpackagecom.wenbronk.elasticsearch.usage.index;importcom.wenbronk.elasticsearch.usage.highLevel.RestHighLevelClientParent;importorg.elasticsearch.ElasticsearchExcept

说实话, 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 classIndex_1_Create extends RestHighLevelClientParent {
    /**
     * index 使用java客户端不好创建, 可以在kibana中进行创建
     * 注意mapping一旦创建, 不可更改
     */
    @Test
    public voidcreateIndices() throws IOException {
        CreateIndexRequest request = new CreateIndexRequest("twitter");
        //add partition
        request.source("{
" +
                ""settings" : {
" +
                ""number_of_shards" : 3,
" +
                ""number_of_replicas" : 2
" +
                "},
" +
                ""mappings" : {
" +
                ""tweet" : {
" +
                ""properties" : {
" +
                ""message" : { "type" : "text" }
" +
                "}
" +
                "}
" +
                "},
" +
                ""aliases" : {
" +
                ""twitter_alias" : {}
" +
                "}
" +
                "}", XContentType.JSON);
        //配置可选参数
        request.timeout(TimeValue.timeValueMinutes(2));
//request.timeout("2m");
        request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
//request.masterNodeTimeout("1m");
//request.waitForActiveShards(2);
request.waitForActiveShards(ActiveShardCount.DEFAULT);
        //使用异步的方式创建
        client.indices().createAsync(request, new ActionListener<CreateIndexResponse>() {
            @Override
            public voidonResponse(CreateIndexResponse createIndexResponse) {
                boolean acknowledged =createIndexResponse.isAcknowledged();
                boolean shardsAcknowledged =createIndexResponse.isShardsAcknowledged();
            }
            @Override
            public voidonFailure(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 classIndex_2_Delete extends RestHighLevelClientParent {
    @Test
    public voiddeleteIndices() {
        DeleteIndexRequest request = new DeleteIndexRequest("twitter");
        request.timeout(TimeValue.timeValueMinutes(2));
        //request.timeout("2m");
//request.masterNodeTimeout("1m");
        request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
        request.indicesOptions(IndicesOptions.lenientExpandOpen());
        client.indices().deleteAsync(request, new ActionListener<DeleteIndexResponse>() {
            @Override
            public voidonResponse(DeleteIndexResponse deleteIndexResponse) {
                boolean acknowledged =deleteIndexResponse.isAcknowledged();
            }
            @Override
            public voidonFailure(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 classIndex_3_exists extends RestHighLevelClientParent {
    public voidtestExists() {
        GetIndexRequest request = newGetIndexRequest();
        request.indices("twitter");
        //可选参数:
        request.local(false);
        request.humanReadable(true);
        request.includeDefaults(false);
//request.indicesOptions(indicesOptions);

        client.indices().existsAsync(request, new ActionListener<Boolean>() {
            @Override
            public voidonResponse(Boolean aBoolean) {
                System.out.println(aBoolean);
            }
            @Override
            public voidonFailure(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 classIndex_4_mapping extends RestHighLevelClientParent {
    public voidtestPutMapping() {
        PutMappingRequest request = new PutMappingRequest("twitter");
        request.type("tweet");
        request.source(
                "{
" +
                        ""properties": {
" +
                        ""message": {
" +
                        ""type": "text"
" +
                        "}
" +
                        "}
" +
                        "}",
                XContentType.JSON);
        //可选参数
        request.timeout(TimeValue.timeValueMinutes(2));
//request.timeout("2m");
        request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
//request.masterNodeTimeout("1m");

        client.indices().putMappingAsync(request, new ActionListener<PutMappingResponse>() {
            @Override
            public voidonResponse(PutMappingResponse putMappingResponse) {
                boolean acknowledged =putMappingResponse.isAcknowledged();
                System.out.println(acknowledged);
            }
            @Override
            public voidonFailure(Exception e) {
            }
        });
    }
}

还是原DSL好用

免责声明:文章转载自《es-06-java创建mapping和setting》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇asp网站中使用百度ueditor教程Dell/R730XD sas盘 raid0与JBOD性能比较下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# HTTP请求 异步(async await)

static void Main(string[] args) { new Task(() => { Invoke(); }).Start(); Console.WriteLine("我是主线...

java登录拦截Filter

此例子为一个简单的登录拦截。 首先在web.xml中配置拦截类。 <filter-mapping> <filter-name>SessionFilter</filter-name> <url-pattern>/*</url-pattern> &...

【C#、csharp】HTTPGET,POST请求

HTTP定义了与服务器交互的不同方法,基本方法有GET,POST,PUT,DELETE,分别对于查,该,增,删。一般情况下我们只用到GET和POST,其他两种都也可以用GET和POST来实现,很多浏览器也只实现了GET和POST两种方法   GET:用户获取信息     安全的:不会对服务器上的数据进行修改,和破坏     幂等的:相同的请求所返回的结果相...

使用多线程时,传递 request 对象丢失

1.原因描述 我们在工作中遇到耗时的一些操作时我们会使用多线程或者mq来解决以便提高程序的响应速度。但是使用多线程时遇到一个问题,我单独开一个线程去进行其他逻辑处理时,在发送消息之前(未开启多线程时)我们是可以获取到 request 信息的,但是在新开的线程中确是无法获取到 request 信息(request is  null)。 2.代码演示 主线程代...

后端接收前端传的数据方式

1. get方式获取:     res = request.GET.get("name",  " ")     GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接 2. 以表单方式传数据     name = request.POST.get("name", "") 3. 以jso...

window.open简单使用

window.open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口。 语法 window.open(URL,name,specs,replace)  参数   使用: views.py from django.shortcuts import render,redirect,HttpResponse def index(request)...