14

次のコードを使用して、Elastic Search のデフォルト 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 サービス:

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();
    }
}

REST API を使用して、インデックスを作成できます。デフォルトの JAVA API では、次の例外が発生します。

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)

どこを間違えたのか教えてください。前もって感謝します

4

4 に答える 4

10

レプリカとシャードの設定:

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();
于 2014-11-18T11:52:13.470 に答える
6

あなたがクライアントを持っていることを考えると、これを行うことができないはずです:

CreateIndexResponse createResponse = client.admin().indices().create(createIndexRequest("test1")).actionGet();
于 2013-05-20T12:45:05.373 に答える