Elasticsearch - SpringBoot 索引与文档相关demo

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


Elasticsearch - SpringBoot 索引与文档相关demo

1. _cat/* 相关API

示例:

GET /_cat/indices/yzy-*-20240830?v&h=index,pri.store.size&s=ss:desc&bytes=gb

在这里插入图片描述
含义:

GET /_cat/indices/yzy-*-20240830:请求 _cat/indices API,获取匹配模式为 yzy-*-20240830 的索引信息。
v:表示显示表头(列名)。
h=index,pri.store.size:指定要显示的列,index 是索引名称,pri.store.size 是主分片的存储大小。
s=ss:desc:按存储大小(ss)降序排序。
bytes=gb:将存储大小以 GB 为单位显示。

代码示例:

    @GetMapping("/api/index_cat")
    public String getIndexCat()   {
        try {
            // 构建 Cat Indices 请求
            Request request = new Request("GET", "/_cat/indices/yzy-*-20240830?v&h=index,pri.store.size&s=ss:desc&bytes=gb");
            // 执行请求
            Response response = client.getLowLevelClient().performRequest(request);
            // 处理响应
            String responseBody = EntityUtils.toString(response.getEntity());
            log.info(responseBody);
            return responseBody;
        } catch (ResponseException e) {
            log.error("Error executing request: " + e.getMessage());
        } catch (IOException i){
            log.error("错误 ",i);

        }
        return null;
    }

2. 查看所有索引

代码示例:

    @GetMapping("/api/index_all")
    public String getAllIndex()   {
        try {

            // 创建索引请求
            Request request = new Request("GET", "/_cat/indices?v");
            // 执行请求
            Response response = client.getLowLevelClient().performRequest(request);
            String msg = EntityUtils.toString(response.getEntity());
            log.info(msg);
            return msg;
        } catch (ResponseException e) {
            log.error("Error executing request: " + e.getMessage());
        } catch (IOException i){
            log.error("错误 ",i);

        }
        return null;
    }

测试:
在这里插入图片描述

3. 创建索引

示例:

     PUT /yzy_test
     {
       "settings": {
         "number_of_shards": 1,
         "number_of_replicas": 1
       },
       "mappings": {
         "properties": {
           "field1": { "type": "text" },
           "field2": { "type": "keyword" }
         }
       }
     }

代码:

    @GetMapping("/api/index_create")
    public String getIndexCreate()   {
        try {

            // 创建索引请求
        Request request = new Request("PUT", "/yzy_test");
        String jsonString = "{ \"settings\": { \"number_of_shards\": 1, \"number_of_replicas\": 1 }, " +
                "\"mappings\": { \"properties\": { \"field1\": { \"type\": \"text\" }, \"field2\": { \"type\": \"keyword\" } } } }";
        request.setJsonEntity(jsonString);

        // 执行请求
        Response response = client.getLowLevelClient().performRequest(request);
        String msg = EntityUtils.toString(response.getEntity());
        log.info(msg);
        return msg;
        } catch (ResponseException e) {
            log.error("Error executing request: " + e.getMessage());
        } catch (IOException i){
            log.error("错误 ",i);

        }
        return null;
    }

测试在这里插入图片描述
在这里插入图片描述

4. 检索索引

代码:

 @GetMapping("/api/index_get")
    public String getGetIndex()   {
        try {

            // 创建索引请求
            Request request = new Request("GET", "/yzy_test");
                       // 执行请求
            Response response = client.getLowLevelClient().performRequest(request);
            String msg = EntityUtils.toString(response.getEntity());
            log.info(msg);
            return msg;
        } catch (ResponseException e) {
            log.error("Error executing request: " + e.getMessage());
        } catch (IOException i){
            log.error("错误 ",i);

        }
        return null;
    }

测试:
在这里插入图片描述

5. 删除索引

代码:

 @GetMapping("/api/index_delete")
    public String getDelIndex()   {
        try {

            // 创建索引请求
            Request request = new Request("DELETE", "/yzy_test");
            // 执行请求
            Response response = client.getLowLevelClient().performRequest(request);
            String msg = EntityUtils.toString(response.getEntity());
            log.info(msg);
            return msg;
        } catch (ResponseException e) {
            log.error("Error executing request: " + e.getMessage());
        } catch (IOException i){
            log.error("错误 ",i);
        }
        return null;
    }

测试:
在这里插入图片描述
在这里插入图片描述

6. 新增文档

代码:

    @GetMapping("/api/doc_create")
    public void createDocument() {
        try {
            // 创建 IndexRequest 对象,指定索引名称和文档ID
            IndexRequest request = new IndexRequest("yzy-app-a-20240830").id("1");

            // 设置文档内容
            String jsonString = "{" +
                    "\"user\":\"kimchy\"," +
                    "\"postDate\":\"2023-08-30\"," +
                    "\"message\":\"trying out Elasticsearch\"" +
                    "}";
            request.source(jsonString, XContentType.JSON);

            // 执行请求
            IndexResponse response = client.index(request, RequestOptions.DEFAULT);
            log.info( "Document add: " + response.getResult());

        } catch (IOException e) {
            log.error("Error creating document", e);
        }
    }

测试:
在这里插入图片描述
在这里插入图片描述

7. 更新文档

代码:

    @GetMapping("/api/doc_update")
    public void updateDocument() {
        try {
            // 创建 UpdateRequest 对象,指定索引名称和文档ID
            UpdateRequest request = new UpdateRequest("yzy-app-a-20240830", "1");

            // 设置更新内容
            String jsonString = "{" +
                    "\"message\":\"updating document content\"" +
                    "}";
            request.doc(jsonString, XContentType.JSON);

            // 执行请求
            UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
            log.info( "Document update: " + response.getResult());

        } catch (IOException e) {
            log.error("Error updating document", e);
        }
    }

测试:
在这里插入图片描述
在这里插入图片描述

8. 根据索引中的文档 ID 查询文档

代码:

    @GetMapping("/api/doc/{index}/{id}")
    public String getDocumentById(@PathVariable String index, @PathVariable String id) {
        try {
            // 创建 GetRequest 对象,指定索引名称和文档ID
            GetRequest getRequest = new GetRequest(index, id);

            // 执行查询
            GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);

            // 判断文档是否存在
            if (getResponse.isExists()) {
                // 返回文档内容
                return getResponse.getSourceAsString();
            } else {
                return "Document not found";
            }
        } catch (Exception e) {
            // 错误处理
            e.printStackTrace();
            return "Error retrieving document: " + e.getMessage();
        }
    }

测试:
在这里插入图片描述

9. 删除文档

    @GetMapping("/api/doc_delete")
    public void deleteDocument() {
        try {
            // 创建 DeleteRequest 对象,指定索引名称和文档ID
            DeleteRequest request = new DeleteRequest("yzy-app-a-20240830", "1");

            // 执行请求
            DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);

            log.info( "Document deleted: " + response.getResult());
        } catch (IOException e) {
            log.error("Error deleting document", e);
        }
    }

测试:
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栗子~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值