【Json/ObjectMapper】将限制用户名密码的Elasticsearch9200端口返回的默认内容转化为类

【192.168.32.128的用户密码】

elastic/123456

【192.168.32.128上ES默认返回的内容】

复制代码
{
  "name" : "node-1",
  "cluster_name" : "liangshan",
  "cluster_uuid" : "h6AscLaBS0qyOKdfq1DO8w",
  "version" : {
    "number" : "7.11.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "ff17057114c2199c9c1bbecc727003a907c0db7a",
    "build_date" : "2021-02-15T13:44:09.394032Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
复制代码

【目标】

把上述内容转化为对象

【实体类Elastic】

复制代码
public class Elastic {
    private String name;
    private String cluster_name;
    private String cluster_uuid;
    private String tagline;

    private Version version;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCluster_name() {
        return cluster_name;
    }

    public void setCluster_name(String cluster_name) {
        this.cluster_name = cluster_name;
    }

    public String getCluster_uuid() {
        return cluster_uuid;
    }

    public void setCluster_uuid(String cluster_uuid) {
        this.cluster_uuid = cluster_uuid;
    }

    public String getTagline() {
        return tagline;
    }

    public void setTagline(String tagline) {
        this.tagline = tagline;
    }

    public Version getVersion() {
        return version;
    }

    public void setVersion(Version version) {
        this.version = version;
    }

    public String toString(){
        return name+"_"+cluster_name+"_"+cluster_uuid+"_"+tagline+"_"+version.getBuild_date();
    }
}
复制代码

【实体类Version】

复制代码
public class Version {
    private String number;
    private String build_flavor;
    private String build_type;
    private String build_hash;
    private String build_date;
    private boolean build_snapshot;
    private String lucene_version;
    private String minimum_wire_compatibility_version;
    private String minimum_index_compatibility_version;

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getBuild_flavor() {
        return build_flavor;
    }

    public void setBuild_flavor(String build_flavor) {
        this.build_flavor = build_flavor;
    }

    public String getBuild_type() {
        return build_type;
    }

    public void setBuild_type(String build_type) {
        this.build_type = build_type;
    }

    public String getBuild_hash() {
        return build_hash;
    }

    public void setBuild_hash(String build_hash) {
        this.build_hash = build_hash;
    }

    public String getBuild_date() {
        return build_date;
    }

    public void setBuild_date(String build_date) {
        this.build_date = build_date;
    }

    public boolean isBuild_snapshot() {
        return build_snapshot;
    }

    public void setBuild_snapshot(boolean build_snapshot) {
        this.build_snapshot = build_snapshot;
    }

    public String getLucene_version() {
        return lucene_version;
    }

    public void setLucene_version(String lucene_version) {
        this.lucene_version = lucene_version;
    }

    public String getMinimum_wire_compatibility_version() {
        return minimum_wire_compatibility_version;
    }

    public void setMinimum_wire_compatibility_version(String minimum_wire_compatibility_version) {
        this.minimum_wire_compatibility_version = minimum_wire_compatibility_version;
    }

    public String getMinimum_index_compatibility_version() {
        return minimum_index_compatibility_version;
    }

    public void setMinimum_index_compatibility_version(String minimum_index_compatibility_version) {
        this.minimum_index_compatibility_version = minimum_index_compatibility_version;
    }
}
复制代码

【访问及转化代码】

复制代码
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.catalina.authenticator.BasicAuthenticator;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

public class AccessCredentialEs {
    public static void main(String[] args) throws Exception{
        BasicCredentialsProvider provider=new BasicCredentialsProvider();
        provider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("elastic","123456"));
        CloseableHttpClient httpClient= HttpClients.custom().setDefaultCredentialsProvider(provider).useSystemProperties().build();

        ClientHttpRequestFactory factory=new HttpComponentsClientHttpRequestFactory(httpClient);
        RestTemplate tplt=new RestTemplate();
        tplt.setRequestFactory(factory);

        String rsps=tplt.getForObject("http://192.168.32.128:9200",String.class);
        System.out.println(rsps);

        ObjectMapper mapper = new ObjectMapper();
        Elastic elastic = mapper.readValue(rsps, Elastic.class);
        System.out.println(elastic);
    }
}
复制代码

【输出】

从System.out.println(elastic);开始的内容

node-1_liangshan_h6AscLaBS0qyOKdfq1DO8w_You Know, for Search_2021-02-15T13:44:09.394032Z

可以看到,如果存在类与Json文的对应关系,要转化还是很方便的。

END

posted @   逆火狂飙  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-03-03 zt:HttpUrlConnection使用详解
2020-03-03 使用HttpUrlConnection访问www.163.com遇到503问题,用设置代理加以解决
2019-03-03 【Canvas与艺术】模拟五个桌球在球桌上进行完全弹性碰撞
2019-03-03 [Canvas与艺术]带尾迹的下雪效果
2019-03-03 【Canvas与诗词】夏日绝句 李清照
2019-03-03 【Canvas与光阑】四条C形色带填满一个圆/环形
2019-03-03 【Canvas与艺术】自制朝阳电脑桌面(1920*1080)
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示