首页 技术 正文
技术 2022年11月6日
0 收藏 725 点赞 636 浏览 5918 个字

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());    }     }
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,118
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,590
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,435
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,206
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,842
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,927