说实话, 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好用