1,准备条件
es服务:127.0.0.1
2,pom.
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.5.3</version>
</dependency>
3,application.yml
spring:
data:
elasticsearch:
host: 127.0.0.1
port: 9200 # http请求使用9200,老版本的客户端transport使用的是9300
4,elasticsearchConfig.java
package com.equaker.es;
import org.apache.http.HttpHost;
import org.elasticsearch.client.*;
import org.spring work.beans.factory.annotation.Value;
import org.spring work.context.annotation.Bean;
import org.spring work.context.annotation.Configuration;
@Configuration
public class ElasticsearchConfiguration {
// 读取自定义配置
@Value(\"${spring.data.elasticsearch.host}\")
private String HOST;
@Value(\"${spring.data.elasticsearch.port}\")
private String PORT;
注入RestHighLevelClient
@Bean
public RestHighLevelClient getClient(){
RestClientBuilder clientBuilder = RestClient.builder(new HttpHost(HOST,
Integer.valueOf(PORT), \"http\"));
RestHighLevelClient client = new RestHighLevelClient(clientBuilder);
return client;
}
}
5,测试使用(demoController.java)
package com.equaker.controller;
import com.alibaba.fastjson.JSON;
import com.equaker.mapper.cluster.UserMapper;
import com.equaker.mapper.master.EQMapper;
import com.equaker.model.EQ;
import com.equaker.model.ESUserInfo;
import com.equaker.model.User;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.spring work.beans.factory.annotation.Autowired;
import org.spring work.data.redis.core.RedisTemplate;
import org.spring work.stereotype.Controller;
import org.spring work.web.bind.annotation.RequestMapping;
import org.spring work.web.bind.annotation.ResponseBody;
import java.math.BigDecimal;
import java.util.Date;
@Controller
@RequestMapping(\"demo\")
public class DemoController {
private static Logger log = LoggerFactory.getLogger(DemoController.class);
@Autowired
private EQMapper eqMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private RedisTemplate<String,String> redisTemplate;
@Autowired
private RestHighLevelClient client;
@RequestMapping(\"/esSave\")
@ResponseBody
public ESUserInfo esSave(){
ESUserInfo esUserInfo = new ESUserInfo(1,\"es-sdq\",23,new Date(),new Date());
IndexRequest indexRequest = new IndexRequest();
indexRequest.index(\"people\");
indexRequest.type(\"user\");
indexRequest.id(\"5\");
indexRequest.source(JSON.toJSONString(esUserInfo), XContentType.JSON);
client.indexAsync(indexRequest, RequestOptions.DEFAULT, new ActionListener<IndexResponse>() {
@Override
public void onResponse(IndexResponse indexResponse) {
log.info(\"total: \"+indexResponse.getShardInfo().getTotal());
log.info(\"success: \"+indexResponse.getShardInfo().getSuccessful());
log.info(\"failed: \"+indexResponse.getShardInfo().getFailed());
}
@Override
public void onFailure(Exception e) {
e.printStackTrace();
}
});
return esUserInfo;
}
@RequestMapping(\"/esGet\")
@ResponseBody
public ESUserInfo esGet(){
GetRequest getRequest = new GetRequest();
getRequest.index(\"people\");
getRequest.type(\"user\");
getRequest.id(\"5\");
client.getAsync(getRequest, RequestOptions.DEFAULT, new ActionListener<GetResponse>() {
@Override
public void onResponse(GetResponse documentFields) {
System.out.println(documentFields.getSource());
}
@Override
public void onFailure(Exception e) {
e.printStackTrace();
}
});
return null;
}
}
6,其他简单 resthigh-level-elasticsearch-client api
public static void save(RestHighLevelClient client) {
IndexRequest indexRequest = new IndexRequest(\"people\");
indexRequest.type(\"user\");
ESUserInfo esUserInfo = new ESUserInfo(2,\"es-sdq2\",23,new Date(),new Date());
indexRequest.id(esUserInfo.getId()+\"\");
indexRequest.source(JSON.toJSONString(esUserInfo), XContentType.JSON);
client.indexAsync(indexRequest, RequestOptions.DEFAULT,new ActionListener<IndexResponse>() {
public void onResponse(IndexResponse response) {
System.out.println(response.getResult());
}
public void onFailure(Exception e) {
e.printStackTrace();
}
});
}
public static void delete(RestHighLevelClient client) {
DeleteRequest deleteRequest = new DeleteRequest(\"people\", \"user\", \"1\");
client.deleteAsync(deleteRequest, RequestOptions.DEFAULT, new ActionListener<DeleteResponse>() {
public void onResponse(DeleteResponse response) {
System.out.println(\"请求http返回码: \"+response.status().getStatus());
System.out.println(\"请求返回结果: \"+response.getResult());
if(response.getResult().equals(DocWriteResponse.Result.NOT_FOUND)) {
// NOT FOUNT
}else if(response.getResult().equals(DocWriteResponse.Result.DELETED)){
//delete success
}
ReplicationResponse.ShardInfo shardInfo = response.getShardInfo();
//the total number of shards the write should go to (replicas and primaries).
//This includes relocating shards, so this
//number can be higher than the number of shards.
System.out.println(shardInfo.getTotal());
//the total number of shards the write succeeded on (replicas and primaries).
//This includes relocating shards, so this
//number can be higher than the number of shards.
System.out.println(shardInfo.getSuccessful());
//The total number of replication failures
System.out.println(shardInfo.getFailed());
for(Failure failure : shardInfo.getFailures()) {
System.out.println(\"失败原因: \"+failure.getCause());
}
}
public void onFailure(Exception e) {
e.printStackTrace();
}
});
}
public static void update(RestHighLevelClient client) {
Map<String, > paras = new HashMap<String, >();
paras.put(\"grade\", 23);
IndexRequest indexRequest = new IndexRequest(\"people\", \"user\", \"4\");
indexRequest.source(paras);
UpdateRequest updateRequest = new UpdateRequest(\"people\", \"user\", \"4\").upsert(indexRequest);
updateRequest.upsert(indexRequest); //update or insert
updateRequest.doc(indexRequest); //only update
try {
UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
System.out.println(updateResponse.getResult());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void get(RestHighLevelClient client) {
GetRequest getRequest = new GetRequest(\"people\", \"user\", \"1\");
String[] includes = new String[]{\"name\", \"age\",\"id\"};//返回包含字段
String[] excludes = Strings.EMPTY_ARRAY;
FetchSourceContext fetchSourceContext = new FetchSourceContext(true,includes,excludes);
getRequest.fetchSourceContext(fetchSourceContext);
getRequest.storedFields(\"_source\");
try {
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
System.out.println(getResponse.getField(\"_source\").getValue());
ESUserInfo userInfo = JSON.parse (getResponse.getSourceAsString(), ESUserInfo.class);
System.out.println(\"user: \"+userInfo);
Map<String, DocumentField> map = getResponse.getFields();
System.err.println(\"fields: \"+map);
System.out.println(\"version: \"+getResponse.getVersion());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
7,官方api文档
继续阅读与本文标签相同的文章
下一篇 :
精益时代的汽车线边物流规划与发展
-
【Java类初始化死锁】记一次Cassandra死锁问题排查
2026-05-18栏目: 教程
-
搭建自己的技术博客系列(一)使用 hexo 搭建一个精美的静态博客
2026-05-18栏目: 教程
-
搭建自己的技术博客系列(二)把 Hexo 博客部署到 GitHub 上
2026-05-18栏目: 教程
-
CMU 15-721 14-数据库调度 Scheduling
2026-05-18栏目: 教程
-
从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员
2026-05-18栏目: 教程
