Java利用ElasticSearch实现增删改功能

 更新时间:2023年08月09日 10:31:00   作者:Awbeci  
这篇文章主要为大家详细介绍了Java如何利用ElasticSearch实现增删改功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

前言

最近在学习elasticsearch,所以从最简单的增删改功能开始,下面是我的版本依赖,我使用的是java17elasticsearch-java8.7spring-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的资料请关注脚本之家其它相关文章!

相关文章

  • java如何读取resources目录和同级目录文件

    java如何读取resources目录和同级目录文件

    介绍了Java中读取resources目录和同级目录文件的方法,并讨论了在IDE和发布环境中可能遇到的问题,通过测试发现,执行目录可能会影响文件读取,建议在使用`user.dir`时注意jar包的运行目录问题
    2024-12-12
  • servlet之web路径问题_动力节点Java学院整理

    servlet之web路径问题_动力节点Java学院整理

    这篇文章主要为大家详细介绍了servlet之web路径问题的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Java在Excel中添加水印的实现(单一水印、平铺水印)

    Java在Excel中添加水印的实现(单一水印、平铺水印)

    这篇文章主要介绍了Java在Excel中添加水印的实现(单一水印、平铺水印),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • java中如何获取时间戳的方法实例

    java中如何获取时间戳的方法实例

    时间戳通常是一个字符序列,唯一地标识某一刻的时间,所以下面这篇文章主要给大家介绍了关于java中如何获取时间戳的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • java volatile关键字作用及使用场景详解

    java volatile关键字作用及使用场景详解

    在本文里我们给大家分享的是关于java volatile关键字作用及使用场景的相关知识点内容,需要的朋友们学习下。
    2019-08-08
  • Spring Boot集成spring-boot-devtools开发时实现热部署的方式

    Spring Boot集成spring-boot-devtools开发时实现热部署的方式

    这篇文章主要介绍了Spring Boot集成spring-boot-devtools开发时实现热部署的方式,文中还给大家提到了spring boot 实现热部署的方式及集成注意事项,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • 为什么Spring和IDEA都不推荐使用 @Autowired 注解

    为什么Spring和IDEA都不推荐使用 @Autowired 注解

    本文主要介绍了为什么Spring和IDEA都不推荐使用 @Autowired 注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • java: 错误: 无效的源发行版18问题及解决

    java: 错误: 无效的源发行版18问题及解决

    这篇文章主要介绍了java: 错误: 无效的源发行版18问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 在Spring-Boot中如何使用@Value注解注入集合类

    在Spring-Boot中如何使用@Value注解注入集合类

    这篇文章主要介绍了在Spring-Boot中如何使用@Value注解注入集合类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot拦截器的配置使用介绍

    SpringBoot拦截器的配置使用介绍

    拦截器可以用来实现未满足某些条件,不容许访问某些资源。SpringBoot 支持拦截器,本文主要介绍拦截器的使用与原理
    2022-10-10

最新评论