IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 一篇实现springboot集成elasticsearch的增删改查 -> 正文阅读

[Java知识库]一篇实现springboot集成elasticsearch的增删改查

准备工作

springboot版本

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>

elasticsearch版本7.6.1,是我本机安装的es版本

<!--elasticsearch-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.6.1</version>
        </dependency>

GetIndexRequest request = new GetIndexRequest("isgsg_index");
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);//判断索引是否存在
        if (exists == false) {
            CreateIndexRequest createIndexRequest = new CreateIndexRequest("isgsg_index");//创建索引
            client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
            System.out.println("********************** isgsg_index创建成功 *****************");
        }
        System.out.println("********************** isgsg_index已存在 *****************");
        User user = new User("isgsg", 21);
        IndexRequest indexRequest = new IndexRequest("isgsg_index");
        indexRequest.id("50");//设置每个文档的id,这里可以使用user的id来设置
        indexRequest.timeout(TimeValue.timeValueSeconds(2));
        indexRequest.source(JSON.toJSONString(user), XContentType.JSON);//用json格式传输实体类
        IndexResponse response = client.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println("添加是否成功:"  + response.status());

//根据文档id删除,这里的id可以是任何一个实体类的id,也可以传一个形参,但必须是string类型
        DeleteRequest deleteRequest = new DeleteRequest("isgsg_index", "1");
        deleteRequest.timeout(TimeValue.timeValueSeconds(6));
        DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
        System.out.println("删除是否成功:" + deleteResponse.status());

User user = new User("1001", "gsg",20);
        //根据userId来更改内容, 这里需要特别说明一下,这里的id如果文档中已经存在,
        // 则会覆盖原来的内容,以达到实现修改的目的,但是如果不存在此id,则es会帮我们新建一个文档
        UpdateRequest updateRequest = new UpdateRequest("isgsg_index",user.getUserId());
        updateRequest.timeout("6s");
        updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);
        UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
        System.out.println("更改是否成功:" + updateResponse.status());

  • 查询所有
SearchRequest searchRequest = new SearchRequest("isgsg_index");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//构建搜索条件
        MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();//查询所有isgsg_index索引下的所有文档
        SearchSourceBuilder query = sourceBuilder.query(matchAllQueryBuilder);
        searchRequest.source(query);//执行搜索
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);//提交
        List<Map<String,Object>> user= new ArrayList<>();//储存map对象
        for (SearchHit hit : searchResponse.getHits().getHits()) {
            user.add(hit.getSourceAsMap());//封装成一个map对象,并储存到list中
        }
  • 根据id查询
//查询id为3的用户
        GetRequest getRequest = new GetRequest("isgsg_index", "3");
        GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
        Map<String, Object> map = getResponse.getSourceAsMap();//封装到map对象中
  • 复合查询 (相当于 mysql 的 where 和 and 查询)这里重点说一下:复合查询的条件有:must ,filter ,mustNot ,should 等。可以根据自己的需要添加查询条件,也可以同时多个must或者其它条件。
SearchRequest searchRequest = new SearchRequest("isgsg_index");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//构建搜索条件
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        boolQueryBuilder.must(QueryBuilders.termQuery("name","黎明"))//必须是name为黎明的用户
                .must(QueryBuilders.termQuery("age",20))//且年龄必须是20岁
                .filter(QueryBuilders.termQuery("sex","male"))//过滤男性
                .mustNot(QueryBuilders.termQuery("hight","178"));//且身高必须不能是178
        sourceBuilder.query(boolQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60,TimeUnit.SECONDS));
        searchRequest.source(sourceBuilder);
        SearchResponse search = client.search(searchRequest, DEFAULT);
        List<Map<String,Object>> user = new ArrayList<>();
        for (SearchHit hit : search.getHits().getHits()) {
            user.add(hit.getSourceAsMap());
        }
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 11:57:15  更:2022-04-04 11:58:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:04:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码