依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.13.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.13.3</version>
</dependency>
配置
@Configuration
public class ESConfig {
@Bean
public RestHighLevelClient getRestHighLevelClient(){
HttpHost http1 = new HttpHost("127.0.0.1", 9200, "http");
HttpHost http2 = new HttpHost("127.0.0.1", 9201, "http");
RestClientBuilder restClientBuilder = RestClient.builder(http1, http2);
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);
return restHighLevelClient;
}
}
@Autowired
private RestHighLevelClient restHighLevelClient;
插入或更新数据
public void insertOrUpdateData() throws IOException {
HashMap<String, String> map = new HashMap<>();
map.put("name", "dd df ff");
map.put("age", "16");
IndexRequest indexRequest = new IndexRequest("myindex");
indexRequest.id("9");
indexRequest.source(map);
restHighLevelClient.indexAsync(indexRequest,
RequestOptions.DEFAULT,
new ActionListener<IndexResponse>() {
@Override
public void onResponse(IndexResponse indexResponse) {
RestStatus status = indexResponse.status();
System.out.println(status.name());
if (indexResponse.getResult() == DocWriteResponse.Result.CREATED) {
System.out.println("创建成功");
} else if (indexResponse.getResult() == DocWriteResponse.Result.UPDATED) {
## 标题 System.out.println("更新成功");
}
}
@Override
public void onFailure(Exception e) {
System.out.println("出异常了");
}
});
}
删除数据
public void deleteData() throws IOException {
DeleteRequest deleteRequest = new DeleteRequest("myindex");
deleteRequest.id("1");
deleteRequest.timeout(TimeValue.timeValueMinutes(2));
DeleteResponse deleteResponse = restHighLevelClient.delete(
deleteRequest, RequestOptions.DEFAULT);
if (deleteResponse.getResult() == DocWriteResponse.Result.NOT_FOUND) {
System.out.println("未找到需要删除的数据");
}
}
更新数据
public void updateData() throws IOException {
Map<String, Object> parameters = new HashMap<>();
parameters.put("count", 4);
Script script = new Script(ScriptType.INLINE, "painless",
"ctx._source.field += params.count", parameters);
UpdateRequest updateRequest = new UpdateRequest("myindex", "2");
updateRequest.script(script);
UpdateResponse updateResponse = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
DocWriteResponse.Result result = updateResponse.getResult();
if (result == DocWriteResponse.Result.CREATED) {
System.out.println("created");
} else if (result == DocWriteResponse.Result.UPDATED) {
System.out.println("updated");
} else if (result == DocWriteResponse.Result.DELETED) {
System.out.println("deleted");
} else if (result == DocWriteResponse.Result.NOOP) {
System.out.println("noop");
}
}
单条查询数据
public void getOneData() throws IOException {
String[] includes = Strings.EMPTY_ARRAY;
String[] excludes = Strings.EMPTY_ARRAY;
FetchSourceContext fetchSourceContext =
new FetchSourceContext(true, includes, excludes);
GetRequest getRequest = new GetRequest("myindex");
getRequest.id("9");
getRequest.fetchSourceContext(fetchSourceContext);
boolean exists = restHighLevelClient.exists(getRequest, RequestOptions.DEFAULT);
if (exists) {
System.out.println("有数据");
}
GetResponse response = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
if (response.isExists()) {
Map<String, Object> sourceAsMap = response.getSourceAsMap();
String index = response.getIndex();
String type = response.getType();
String id = response.getId();
System.out.println("index:" + index);
System.out.println("type:" + type);
System.out.println("id:" + id);
System.out.println(sourceAsMap);
} else {
System.out.println("没有数据");
}
}
多条查询
public void multiQuery() throws IOException {
MultiGetRequest multiGetRequest = new MultiGetRequest();
multiGetRequest.add("myindex", "3");
multiGetRequest.add("myindex", "5");
MultiGetResponse multiGetResponse = restHighLevelClient
.mget(multiGetRequest, RequestOptions.DEFAULT);
MultiGetItemResponse[] responses = multiGetResponse.getResponses();
Stream.of(responses).forEach(response -> {
String id = response.getResponse().getId();
String source = response.getResponse().getSourceAsString();
System.out.println("id = " + id + " --> " + source);
});
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通