加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

通过Java API在弹性搜索中创建索引

发布时间:2020-12-14 17:42:59 所属栏目:Java 来源:网络整理
导读:我使用以下代码在弹性搜索中创建索引, 默认JAVA API: Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name","myClusterName").put("client.transport.sniff",true).build(); Client client = new TransportClient(settings).addTra
我使用以下代码在弹性搜索中创建索引,
默认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)

请指导我犯错误的地方.提前致谢

解决方法

TransportClient的端口(通过java API)与Http不同 缺省情况下,transportClient端口为9300

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读