Reputation: 2360
I used following code for creating index in Elastic Search, Default JAVA API:
Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "myClusterName").put("client.transport.sniff", true).build();
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("localhost", 9200));
CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate("test1");
CreateIndexResponse response = createIndexRequestBuilder.execute().actionGet();
System.out.println(response.isAcknowledged());
REST Service:
HttpURLConnection con = null;
try
{
String url = "http://localhost:9200/test2";
URL resturl = new URL(url);
con = (HttpURLConnection) resturl.openConnection();
con.setDoOutput(true);
con.setRequestMethod("PUT");
BufferedReader in = null;
try
{
if (con.getInputStream() != null)
{
in = new BufferedReader(new InputStreamReader(con.getInputStream()));
}
}
catch (IOException e)
{
if (con.getErrorStream() != null)
{
in = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
}
if (in == null)
{
throw new Exception("Unable to read response from server");
}
StringBuffer decodedString = new StringBuffer();
String line;
while ((line = in.readLine()) != null)
{
decodedString.append(line);
}
in.close();
System.out.println("4");
Integer responseCode = con.getResponseCode();
System.out.println(responseCode);
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
if (con != null)
{
con.disconnect();
}
}
By using REST API, I am able to create index. By default JAVA API, I am getting the following Exception.
org.elasticsearch.client.transport.NoNodeAvailableException: No node available
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:202)
at org.elasticsearch.client.transport.support.InternalTransportIndicesAdminClient.execute(InternalTransportIndicesAdminClient.java:85)
at org.elasticsearch.client.support.AbstractIndicesAdminClient.create(AbstractIndicesAdminClient.java:200)
at org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder.doExecute(CreateIndexRequestBuilder.java:206)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:62)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:57)
at ElasticSearch.createIndex(ElasticSearch.java:121)
at ElasticSearch.main(ElasticSearch.java:157)
Please guide me where I made mistake. Thanks in advance
Upvotes: 14
Views: 35793
Reputation: 5113
Using JAVA High-Level Rest Client below code can be used to create Index.
CreateIndexRequest request = new CreateIndexRequest("users");
request.settings(Settings.builder()
.put("index.number_of_shards", 3)
.put("index.number_of_replicas", 2)
);
Map<String, Object> message = new HashMap<>();
message.put("type", "text");
Map<String, Object> properties = new HashMap<>();
properties.put("userId", message);
properties.put("name", message);
Map<String, Object> mapping = new HashMap<>();
mapping.put("properties", properties);
request.mapping(mapping);
CreateIndexResponse indexResponse = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println("response id: "+indexResponse.index());
For further reference please read : https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-create-index.html#java-rest-high-create-index
Upvotes: 3
Reputation: 1955
With replicas and shards settings:
Settings indexSettings = ImmutableSettings.settingsBuilder()
.put("number_of_shards", 1)
.put("number_of_replicas", 1)
.build();
CreateIndexRequest indexRequest = new CreateIndexRequest(index, indexSettings);
client.admin().indices().create(indexRequest).actionGet();
Upvotes: 10
Reputation: 17974
Given that you have you client shouldn't you be able to do this then:
CreateIndexResponse createResponse = client.admin().indices().create(createIndexRequest("test1")).actionGet();
Upvotes: 6
Reputation: 312
The port for TransportClient(via java API) is different than Http By default, transportClient port is 9300
Upvotes: 10