公众号:java乐园
Elasticsearch官方为Java提供了三种客户端API:
1、TransportClient:这种方式通过TCP与Elasticsearch服务进行交互。
2、Java Low Level REST Client: 低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有ES版本。
3、Java High Level REST Client: 高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。
另外Spring框架也提供了spring-data-elasticsearch对Elasticsearch进行CURD操作,但是最底层也是基于Elasticsearch官方提供的API。
对于TransportClient API官方有如下一段话
https://www.elastic.co/guide/en/elasticsearch/client/java-api/7.0/java-api.html
The TransportClient is deprecated in favour of the Java High Level REST Client and will be removed in Elasticsearch 8.0. The migration guide describes all the steps needed to migrate.
TransportClient API已经被标识为过期,并在Elasticsearch 8.0.版本后被移除。但是TransportClient API在一些陈年老项目还是使用到的,今天就从TransportClient API开始介绍一下Elasticsearch的几个Java客户端API。
1、在pom.xml文件中引入
org.elasticsearch.client
transport
7.0.0
2、构建TransportClient对象
public static TransportClient getTransportClient(){
TransportClient client = null;
try {
client = new PreBuiltTransportClient(Settings.EMPTY);
//根据主机名获取InetAddress对象
// InetAddress remAdd=InetAddress.getByName("es.server.com");
//获取本地InetAddress对象
// InetAddress locAdd=InetAddress.getLocalHost();
//创建客户端clients
InetAddress locAdd = InetAddress.getByName("127.0.0.1"); // ip
client.addTransportAddress(new TransportAddress(locAdd, 9300));
System.out.println(client);
//client.close();
}catch (Exception e){
e.printStackTrace();
}
return client;
}
3、document操作,document分为单文档和多文档操作
https://www.elastic.co/guide/en/elasticsearch/client/java-api/7.0/java-docs.html
4、创建Document
Index API 允许我们添加某种类型的JSON文档到特定的index ,并使之可搜索。
使用json字符串创建Index
public static IndexResponse getIndexResponseWithString(TransportClient client){
String json = "{" +
""user":"kimchy"," +
""postDate":"2013-01-30"," +
""message":"trying out Elasticsearch"" +
"}";
IndexResponse response = client.prepareIndex
("twitter", "tweet", "1")
.setSource(json, XContentType.JSON)
.get();
return response;
}
使用map创建Index
public static IndexResponse getIndexResponseWithMap(TransportClient client) {
Map json = new HashMap();
json.put("user","kimchy");
json.put("postDate",new Date());
json.put("message","trying out Elasticsearch");
IndexResponse response = client.prepareIndex
("twitter2", "tweet2", "2")
.setSource(json, XContentType.JSON)
.get();
return response;
}
生成JSON文档的方式如下:
手动使用native byte[] or as a String
使用一个可以自动转换为对应JSON 的Map
使用第三方库如 Jackson序列化 beans
使用内置的 XContentFactory.jsonBuilder()
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
人工智能(AI)在未来几年内仍然具有广泛的前景和巨大的潜力。以下是AI行业可能的发展趋势和前景: 1. 技术的持续进步:随着硬件、算法和数据的不断发展,AI技术将持续进步。这意味着AI将更加智能化,能够处理更复杂的任务,并在更多领域取得突破。 2. 更广泛的应…