Java操作ElasticSearch之创建客户端连接
发布时间:『 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());
}
}
|