Java客户端如何直接调用es的API

举报
神的孩子在歌唱 发表于 2024/04/21 18:56:20 2024/04/21
【摘要】 Java客户端如何直接调用es的API前言这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。作者:神的孩子都在歌唱一. 问题今天做项目的时候,想要直接通过java客户端调用es的api创建策略PUT {{url}}/_ilm/policy/test_policy{ "policy": { "phases": { "hot": { "m...

Java客户端如何直接调用es的API



前言

这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。

作者:神的孩子都在歌唱


一. 问题

今天做项目的时候,想要直接通过java客户端调用es的api创建策略

PUT {{url}}/_ilm/policy/test_policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_docs": 1000000
          }
        }
      }
    }
  }
}

我的项目是用springboot写的,通过以下依赖来创建es的客户端

        <dependency>
            <groupId>co.elastic.clients</groupId>
            <artifactId>elasticsearch-java</artifactId>
            <version>8.11.4</version>
            <scope>compile</scope>
        </dependency>

那么我们怎么使用这个客户端直接通过发送json请求体的方式与es交互呢?


二. withJson

我去看了一眼官方文档 ,它可以通过withJson来调用

image-20240411180959238

所以我们可以根据它的列子来编写代码,具体代码如下

    String policyName = "max_docs_policy";
​
    Reader policyBody = new StringReader("{\n" +
            "      \"policy\": {\n" +
            "        \"phases\": {\n" +
            "          \"hot\": {\n" +
            "            \"min_age\": \"0ms\",\n" +
            "            \"actions\": {\n" +
            "              \"rollover\": {\n" +
            "                \"max_docs\": 1000000\n" +
            "              }\n" +
            "            }\n" +
            "          },\n" +
            "          \"warm\": {\n" +
            "            \"min_age\": \"30d\",\n" +
            "            \"actions\": {\n" +
            "              \"set_priority\": {\n" +
            "                \"priority\": 50\n" +
            "              }\n" +
            "            }\n" +
            "          }\n" +
            "        }\n" +
            "      }\n" +
            "    }");
    try {
        // 判断策略是否存在
        elasticsearchManageClient.ilm().getLifecycle(g->g.name(policyName));
    } catch (Exception e) {
        // 不存在就创建
        elasticsearchManageClient.ilm().putLifecycle(l->l.name(policyName).withJson(policyBody));
        }
​

通过以上代码就能够创建指定的策略了

作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

转载说明:务必注明来源,附带本人博客连接。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。