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());
     }
     
}

猜你喜欢

转载自www.cnblogs.com/gyadmin/p/8962724.html