elasticsearch java 客户端api示例
参考官方文档,使用elasticsearch java客户端对es进行操作。
elasticsearch maven依赖
<properties>
<es.version>7.6.2</es.version>
<gson.version>2.8.6</gson.version>
</properties>
<!-- json start-->
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<!--json end-->
<!--elasticsearch start-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${es.version}</version>
</dependency>
<!--elasticsearch end-->
elasticsearch java 客户端(client)连接elasticsearch集群并写入数据
package com.troll.bigdata.component.example.elasticsearch.example;
import com.google.gson.Gson;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class ConnectES {
public static void main(String[] args) {
/**
* 官方参考链接
* https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html
*/
// 读取ES配置
String host = "localhost";
int port = 8300;
// 打印es连接信息
System.out.println("host:" + host + ",port:" + port);
// // 获取settings
Settings settings = Settings.builder()
.put("client.transport.sniff", false)
.put("cluster.name", "troll_es_dev").build();
// 客户端对象
TransportClient client = null;
// 建立ES连接
try {
client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName(host), port));
} catch (UnknownHostException e) {
e.printStackTrace();
}
// json拼装
String json = "{" +
""uid":1,"+
""user":"kimchy"," +
""postDate":"2013-01-30"," +
""message":"trying out Elasticsearch"" +
"}";
// 执行api
IndexResponse response = client.prepareIndex("twitter", "_doc","1")
.setSource(json, XContentType.JSON)
.get();
// 提取返回值,放入map,便于查看
Map<String,Object> rep = new HashMap<String, Object>();
// Index name
rep.put("_index",response.getIndex());
// Type name
rep.put("_type",response.getType());
// Document ID (generated or not)
rep.put("_id",response.getId());
// Version
rep.put("_version",response.getVersion());
// status has stored current instance statement.
rep.put("status",response.status().getStatus());
// 打印返回值,转json是为了方便查看
Gson gson = new Gson();
System.out.println(gson.toJson(rep));
// 释放客户端
client.close();
}
}
执行效果:
host:localhost,port:8300
{"_index":"twitter-new","_type":"_doc","_id":"1","_version":5,"status":200}
** 查看elasticsearch java客户端插入的数据 **
# 查看索引数据
GET /twitter/_doc/1
执行效果如下:
{
“_index” : “twitter-new”,
“_type” : “_doc”,
“_id” : “1”,
“_version” : 5,
“_seq_no” : 6,
“_primary_term” : 1,
“found” : true,
“_source” : {
“uid” : 1,
“user” : “kimchy”,
“postDate” : “2013-01-30”,
“message” : “trying out Elasticsearch”
}
}
从反馈结果看,数据已插入ES。