zoukankan      html  css  js  c++  java
  • ES transport client使用

    ES transport client bulk insert

    传输(transport)客户端

    TransportClient利用transport模块远程连接一个elasticsearch集群。它并不加入到集群中,只是简单的获得一个或者多个初始化的transport地址,并以轮询的方式与这些地址进行通信。

    // on startup
    Client client = new TransportClient()
            .addTransportAddress(new InetSocketTransportAddress("host1", 9300))
            .addTransportAddress(new InetSocketTransportAddress("host2", 9300));
    
    // on shutdown
    client.close();
    

    注意,如果你有一个与elasticsearch集群不同的集群,你可以设置机器的名字。

    Settings settings = ImmutableSettings.settingsBuilder()
            .put("cluster.name", "myClusterName").build();
    Client client =    new TransportClient(settings);
    //Add transport addresses and do something with the client...
    

    你也可以用elasticsearch.yml文件来设置。

    这个客户端可以嗅到集群的其它部分,并将它们加入到机器列表。为了开启该功能,设置client.transport.sniff为true。

    Settings settings = ImmutableSettings.settingsBuilder()
            .put("client.transport.sniff", true).build();
    TransportClient client = new TransportClient(settings);

    利用elasticsearch帮助类生成JSON

    elasticsearch提供了内置的帮助类来将数据转换为JSON

    import static org.elasticsearch.common.xcontent.XContentFactory.*;
    
    XContentBuilder builder = jsonBuilder()
        .startObject()
            .field("user", "kimchy")
            .field("postDate", new Date())
            .field("message", "trying out Elasticsearch")
        .endObject()
    

    注意,你也可以使用startArray(String)endArray()方法添加数组。另外,field可以接收任何类型的对象,你可以直接传递数字、时间甚至XContentBuilder对象。

    可以用下面的方法查看json。

    String json = builder.string();
    

    索引文档

    下面的例子将JSON文档索引为一个名字为“twitter”,类型为“tweet”,id值为1的索引。

    import static org.elasticsearch.common.xcontent.XContentFactory.*;
    
    IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
            .setSource(jsonBuilder()
                        .startObject()
                            .field("user", "kimchy")
                            .field("postDate", new Date())
                            .field("message", "trying out Elasticsearch")
                        .endObject()
                      )
            .execute()
            .actionGet();
    

    你也可以不提供id:

    String json = "{" +
            ""user":"kimchy"," +
            ""postDate":"2013-01-30"," +
            ""message":"trying out Elasticsearch"" +
        "}";
    
    IndexResponse response = client.prepareIndex("twitter", "tweet")
            .setSource(json)
            .execute()
            .actionGet();

    bulk API

    bulk API允许开发者在一个请求中索引和删除多个文档。下面是使用实例。

    import static org.elasticsearch.common.xcontent.XContentFactory.*;
    
    BulkRequestBuilder bulkRequest = client.prepareBulk();
    
    // either use client#prepare, or use Requests# to directly build index/delete requests
    bulkRequest.add(client.prepareIndex("twitter", "tweet", "1")
            .setSource(jsonBuilder()
                        .startObject()
                            .field("user", "kimchy")
                            .field("postDate", new Date())
                            .field("message", "trying out Elasticsearch")
                        .endObject()
                      )
            );
    
    bulkRequest.add(client.prepareIndex("twitter", "tweet", "2")
            .setSource(jsonBuilder()
                        .startObject()
                            .field("user", "kimchy")
                            .field("postDate", new Date())
                            .field("message", "another post")
                        .endObject()
                      )
            );
    
    BulkResponse bulkResponse = bulkRequest.execute().actionGet();
    if (bulkResponse.hasFailures()) {
        // process failures by iterating through each bulk response item
    }


    摘自:https://endymecy.gitbooks.io/elasticsearch-guide-chinese/content/java-api/index-api.html
  • 相关阅读:
    video 属性和事件用法大全
    微信小程序 组件通信相关知识整理
    JavaScript实现登录窗口的拖拽
    JS 各种宽高
    CSS3 Animation
    CSS3 Transition
    CSS3 Transform
    vue 回到页面顶部
    element-ui 动态换肤
    Chrome浏览器下自动填充的输入框背景
  • 原文地址:https://www.cnblogs.com/bonelee/p/6956138.html
Copyright © 2011-2022 走看看