Java利用ElasticSearch实现增删改功能
前言
最近在学习elasticsearch,所以从最简单的增删改功能开始,下面是我的版本依赖,我使用的是java17、elasticsearch-java8.7和spring-boot3.0
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.7.1</version>
</dependency>静态index操作
我使用的是ElasticsearchOperations来实现,先看看基础类定义:
@Data
@Document(indexName = "index_urls", createIndex = true)
public class UrlIndex {
private String id;
private String uid;
private String title;
// 下拉提示建议使用的字段,注意:Completion类型字段,不能做筛选用
// @CompletionField(analyzer="ik_smart",searchAnalyzer="ik_smart", maxInputLength = 100)
private Completion suggest;
private String url;
private String domain;
private String description;
private String favicon;
private Date createdDt;//创建时间
private Date updatedDt;//更新时间
}定义好之后,我们来实现增删改功能:
新增:
UrlIndex url = JSONObject.parseObject(msg, UrlIndex.class); UrlIndex urlIndex = elasticsearchOperations.save(url);
编辑:
Url url = JSONObject.parseObject(msg, Url.class);
UrlIndex urlIndex = elasticsearchOperations.get(url.getId(), UrlIndex.class);
if (urlIndex != null) {
urlIndex.setTitle(url.getTitle());
// 存在即更新,,注意要设置index
elasticsearchOperations.save(urlIndex);
}删除:
elasticsearchOperations.delete(id, UrlIndex.class);
动态index操作
如果我们不想在实体类上添加@Document来指定index,我们如何实现呢?
@Document(indexName = "index_urls", createIndex = true)
新增:
UrlIndex url = JSONObject.parseObject(msg, UrlIndex.class);
IndexCoordinates indexCoordinates = IndexCoordinates.of("index_name");
UrlIndex urlIndex = elasticsearchOperations.save(url, indexCoordinates);编辑:
IndexCoordinates indexCoordinates = IndexCoordinates.of("index_name");
UrlIndex resUrl = JSONObject.parseObject(msg, UrlIndex.class);
// 通过get查询出es数据,注意要设置index
UrlIndex urlIndex = elasticsearchOperations.get(resUrl.getId(), UrlIndex.class, indexCoordinates);
if (urlIndex != null) {
urlIndex.setTitle(resUrl.getTitle());
urlIndex.setSuggest(resUrl.getSuggest());
// 存在即更新,,注意要设置index
elasticsearchOperations.save(urlIndex, indexCoordinates);
}删除:
IndexCoordinates indexCoordinates = IndexCoordinates.of("index_name");
elasticsearchOperations.delete(msg, indexCoordinates);总结
1、在实体类上通过设置@Document(indexName = "index_urls", createIndex = true)就可以实现索引就可以完成增删改功能
2、但是如果你使用动态索引,则要指定你的索引名
3、我使用的是ElasticsearchOperations当然还有其它的实现方式,如EnableElasticsearchRepositories
以上就是Java利用ElasticSearch实现增删改功能的详细内容,更多关于Java ElasticSearch的资料请关注脚本之家其它相关文章!
相关文章
Spring Boot集成spring-boot-devtools开发时实现热部署的方式
这篇文章主要介绍了Spring Boot集成spring-boot-devtools开发时实现热部署的方式,文中还给大家提到了spring boot 实现热部署的方式及集成注意事项,感兴趣的朋友跟随脚本之家小编一起学习吧2018-05-05
为什么Spring和IDEA都不推荐使用 @Autowired 注解
本文主要介绍了为什么Spring和IDEA都不推荐使用 @Autowired 注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-04-04
在Spring-Boot中如何使用@Value注解注入集合类
这篇文章主要介绍了在Spring-Boot中如何使用@Value注解注入集合类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08


最新评论