zoukankan      html  css  js  c++  java
  • Java操作ElasticSearch之创建客户端连接

    Java操作ElasticSearch之创建客户端连接

    3
    发布时间:『 2017-09-11 17:02』  博客类别:elasticsearch  阅读(3157)

    Java操作ElasticSearch之创建客户端连接

    ElasticSearch提供了主流开发语言的连接开发包 

    新建的maven项目 添加如下依赖即可:

    注意几点:客户端版本号要与服务端的es版本号保持一致。

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
                <version>6.2.4</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.2</version>
            </dependency>
        </dependencies>

    连接代码:

    package com.java1234.es;
     
    import java.net.InetAddress;
     
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
     
    public class Test {
     
        private static String host="192.168.1.108"// 服务器地址
        private static int port=9300// 端口
         
        public static void main(String[] args) throws Exception{
            TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
                       .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(Test.host), Test.port));
            System.out.println(client);
            client.close();
        }
    }

    这里有个Setting 等后面讲到集群再详解;

    Java操作ElasticSearch之创建索引   (索引的名称--库,类型--表名称,文档id--数据)

    client.prepareIndex ("qq", "tweet","1")创建索引

    client.prepareGet("qq", "tweet","1")  获取文档

    ElasticSearch客户端提供了多种方式的数据创建方式,包括json串,map,内置工具;我们正式开始一般用json格式,借助json工具框架,比如gson ,json-lib,fastjson等等;

    我们给下实例:

    package com.java1234.es;
     
    import java.net.InetAddress;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
     
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    import org.elasticsearch.common.xcontent.XContentFactory;
    import org.elasticsearch.common.xcontent.XContentType;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
     
    import com.google.gson.JsonObject;
     
    /**
     * ElasticSearch客户端连接服务器测试
     * @author Administrator
     *
     */
    public class EsTest {
     
        private static String host="192.168.1.108"// 服务器地址
         
        private static int port=9300// 端口
         
        private TransportClient client=null;
         
        /**
         * 获取连接
         * @return
         */
        @SuppressWarnings({ "unchecked""resource" })
        @Before
        public void getCient()throws Exception{
           client = new PreBuiltTransportClient(Settings.EMPTY)
                       .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(EsTest.host), EsTest.port));
        }
         
        /**
         * 关闭连接
         * @param client
         */
        @After
        public void close(){
            if(client!=null){
                client.close();
            }
        }
         
        /**
         * 添加索引
         */
        @Test
        public void testIndex()throws Exception{
            IndexResponse response =client.prepareIndex("twitter""tweet""1")
                .setSource(XContentFactory.jsonBuilder()
                        .startObject()
                        .field("user""kimchy")
                        .field("postDate"new Date())
                        .field("message""trying out Elasticsearch")
                    .endObject()
                        )
                .get();
            System.out.println("索引名称:"+response.getIndex());
            System.out.println("类型:"+response.getType());
            System.out.println("文档ID:"+response.getId()); // 第一次使用是1
            System.out.println("当前实例状态:"+response.status());
        }
         
        /**
         * 添加索引
         */
        @Test
        public void testIndex2()throws Exception{
            String json = "{" +
                    ""user":"kimchy"," +
                    ""postDate":"2013-01-30"," +
                    ""message":"trying out Elasticsearch"" +
                "}";
             
            IndexResponse response =client.prepareIndex("weibo""tweet")
                .setSource(json,XContentType.JSON)
                .get();
            System.out.println("索引名称:"+response.getIndex());
            System.out.println("类型:"+response.getType());
            System.out.println("文档ID:"+response.getId()); // 第一次使用是1
            System.out.println("当前实例状态:"+response.status());
        }
         
        /**
         * 添加索引
         */
        @Test
        public void testIndex3()throws Exception{
            Map<String, Object> json = new HashMap<String, Object>();
            json.put("user","kimchy");
            json.put("postDate",new Date());
            json.put("message","trying out Elasticsearch");
             
            IndexResponse response =client.prepareIndex("qq""tweet")
                .setSource(json)
                .get();
            System.out.println("索引名称:"+response.getIndex());
            System.out.println("类型:"+response.getType());
            System.out.println("文档ID:"+response.getId()); // 第一次使用是1
            System.out.println("当前实例状态:"+response.status());
        }
         
        /**
         * 添加索引
         */
        @Test
        public void testIndex4()throws Exception{
            JsonObject jsonObject=new JsonObject();
            jsonObject.addProperty("user""kimchy");
            jsonObject.addProperty("postDate""1989-11-11");
            jsonObject.addProperty("message""trying out Elasticsearch");
             
            IndexResponse response =client.prepareIndex("qq""tweet")
                .setSource(jsonObject.toString(),XContentType.JSON)
                .get();
            System.out.println("索引名称:"+response.getIndex());
            System.out.println("类型:"+response.getType());
            System.out.println("文档ID:"+response.getId()); // 第一次使用是1
            System.out.println("当前实例状态:"+response.status());
        }
         
    }
  • 相关阅读:
    storm从入门到放弃(三),放弃使用 StreamId 特性
    10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
    滚动条控件
    控件添加——静态控件、编辑框控件、命令按钮、复选框和单选按钮控件
    9、图像处理基础运算
    控件——静态空间、编辑框控件、命令按钮、复选框和单选控件
    Visual C++.NET设计
    CMD指令及其意义
    OpenCV与QT联合开发示例
    OpenCV基础知识介绍
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8962724.html
Copyright © 2011-2022 走看看