前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6 ElasticSearch 高级-应用篇

6 ElasticSearch 高级-应用篇

作者头像
收心
发布2022-01-17 14:56:53
3670
发布2022-01-17 14:56:53
举报
文章被收录于专栏:Java实战博客

本片内容 简介 批量操作 导入数据 各种查询 索引别名、重建索引

所有内容 我们都先介绍 脚本操作、在介绍Java API操作

批量操作

bulk 批量操作 :将文档 增删改查 一系列的操作,通过一次请求全部做完。优点:可以减少网络传输次数。

语法 与 案例

我们去实际操作一下吧。操作前 确保 索引库有 5 个文档

先查一下 有没有 5 个文档

代码语言:javascript
复制
GET persion2/_search

查询后 我们就开始 写我们的脚本了

代码语言:javascript
复制
POST _bulk
{"delete":{"_index":"persion2","_id":"5"}}
{"create":{"_index":"persion2","_id":"8"}}
{"name":"BULK插入","age":"88"}
{"update":{"_index":"persion2","_id":"2"}}
{"doc":{"name":"二号名字被修改了"}}

上面的含义是 :

  • 删除 索引库 persion2中 id 为 5 的文档
  • 在索引库persion2中 创建一个 id 为8 的文档 数据又 name=”BULB插入”,age=”88″
  • 更新索引库persion2 中 id 为2 的文档,修改其中name 为 “二号名字被修改”

注意 上面的 update 就是更新 ,没有此 id 就会提示 document_missing_exception 说明 没有找到此文档

我们执行一下看看结果 代码有些长 有必要看一看

代码语言:javascript
复制
{
  "took" : 12, // 这里执行需要的毫秒数
  "errors" : false, // 是否出现错误
  "items" : [
    {
      "delete" : {
        "_index" : "persion2",
        "_type" : "_doc",
        "_id" : "5",
        "_version" : 1,
        "result" : "not_found",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 89,
        "_primary_term" : 4,
        "status" : 404
      }
    },
    {
      "create" : {
        "_index" : "persion2",
        "_type" : "_doc",
        "_id" : "8",
        "_version" : 2,
        "result" : "created",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 90,
        "_primary_term" : 4,
        "status" : 201
      }
    },
    {
      "update" : {
        "_index" : "persion2",
        "_type" : "_doc",
        "_id" : "2",
        "_version" : 2,
        "result" : "updated",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 91,
        "_primary_term" : 4,
        "status" : 200
      }
    }
  ]
}

上面显示 errors 为 false 就是 执行成功了

最终的Java 代码实现

代码语言:javascript
复制
    /**
     * 批量操作 bulk
     * @throws IOException
     */
    @Test
    void bulk() throws IOException {
        // 创建 BulkRequest 对象,用于 整合所有的操作
        BulkRequest bulkRequest = new BulkRequest();

        // 添加 删除文档 相关操作
        DeleteRequest deleteRequest = new DeleteRequest("persion2","5");
        bulkRequest.add(deleteRequest);

        // 添加 添加文档
        Map map = new HashMap();
        map.put("name","BULK插入");
        map.put("age","88");
        IndexRequest indexRequest = new IndexRequest("persion2").id("8").source(map);

        // 更新文档
        UpdateRequest updateRequest = new UpdateRequest();
        Map map1 = new HashMap();
        map1.put("name","二号名字被修改了");
        updateRequest.index("persion2").id("2").doc(map1);
        bulkRequest.add(updateRequest);


        // 执行 批量操作
        BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        RestStatus status = bulk.status();
        System.out.println(status);
    }

导入数据 Very Important

模拟一个需求:

将数据库中 Goods表 的数据 导入 ElasticSearch 中

实现步骤:

  • 创建goods索引
  • 查询Goods表数据
  • 批量添加到ElasticSearch中

特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 批量操作
  • 导入数据 Very Important
  • 模拟一个需求:
  • 实现步骤:
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档