插入文档elasticsearch java API无法正常工作

时间:2017-02-10 13:06:32

标签: java elasticsearch

所以我只是想通过XmlTextReader reader = new XmlTextReader(localUrl); 在我的indice中添加数据。我的代码运行没有任何例外。

  • 它成功连接到我的服务器,我可以在我的控制台上看到连接详细信息。
  • 我列出了服务器上可用的所有java transport client api,它确实也显示了这一点。
  • 然后我尝试将indices插入我的docs indice
  • 代码运行,没有任何例外。
  

我迷失在这里,不知道我错过了什么。数据未插入logs。任何帮助表示赞赏。

以下是我的代码:

indice

指数制图:

public static void main(String[] args) {
    try {
        ElasticSearchMain es  = new ElasticSearchMain();
        ElasticSearchMain.configureClient();
        JSONObject data = new JSONObject();
        data.put("serverip", "bhavik");
        data.put("classname", "bhavik");
        data.put("methodname", "bhavik");
        data.put("exception", "bhavik");
        data.put("logexception", "4896681231231232");
        data.put("timestamp", "1900-00-00");


        es.setIndex(data.toString(), "logs");

    } catch (Exception e) {
        e.printStackTrace();
    }
}

public IndexRequestBuilder setIndex(String data,String IndexName){
        try{
            return client.prepareIndex(IndexName, "event").setSource(data);
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }


public static void configureClient(){

        try{

            if(client==null){
                String address = "localhost";

                int port = 9300;
                BasicConfigurator.configure();
                client = TransportClient.builder().build()
                        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(address), port));

                String[] indices = client.admin().indices().getIndex(new GetIndexRequest()).actionGet().getIndices();
                for (String s : indices) {
                    System.out.println("indice ->> " + s);
                }

            }


        }catch(Exception e ){
            e.printStackTrace();
            EmgrLog.AppendExceptionToLog(e);
        }
    }

1 个答案:

答案 0 :(得分:0)

此代码:

public IndexRequestBuilder setIndex(String data,String IndexName){
    try{
        return client.prepareIndex(IndexName, "event").setSource(data);
    }catch(Exception e){
        e.printStackTrace();
    }
    return null;
}

返回“请求构建器”,但此请求永远不会构建,也不会执行,并且逻辑上不会发生任何后果。

要提交请求,您必须将其发送到elasticsearch实例。

Elasticsearch JavaAPI documentation建议使用以下代码:

IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
    .setSource(jsonBuilder()
                .startObject()
                    .field("user", "kimchy")
                    .field("postDate", new Date())
                    .field("message", "trying out Elasticsearch")
                .endObject()
              )
    .get();

请注意,代码段末尾的get()是触发通话的内容。