content: package com.alibaba.datax.plugin.writer.elasticsearchwriter.jest;
  
  import com.google.gson.Gson;
  import io.searchbox.client.JestResult;
  
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  
  public class ClusterInfoResult extends JestResult {
  
  	private static final Pattern FIRST_NUMBER = Pattern.compile("\\d");
  
  	private static final int SEVEN = 7;
  
  	public ClusterInfoResult(Gson gson) {
  		super(gson);
  	}
  
  	public ClusterInfoResult(JestResult source) {
  		super(source);
  	}
  
  	/**
  	 * 判断es集群的部署版本是否大于7.x
  	 * 大于7.x的es对于Index的type有较大改动，需要做额外判定
  	 * 对于7.x与6.x版本的es都做过测试，返回符合预期;5.x以下版本直接try-catch后返回false，向下兼容
  	 * @return
  	 */
  	public Boolean isGreaterOrEqualThan7() throws Exception {
  		// 如果是没有权限，直接返回false，兼容老版本
  		if (responseCode == 403) {
  			return false;
  		}
  		if (!isSucceeded) {
  			throw new Exception(getJsonString());
  		}
  		try {
  			String version = jsonObject.getAsJsonObject("version").get("number").toString();
  			Matcher matcher = FIRST_NUMBER.matcher(version);
  			matcher.find();
  			String number = matcher.group();
  			Integer versionNum = Integer.valueOf(number);
  			return versionNum >= SEVEN;
  		} catch (Exception e) {
  			//5.x 以下版本不做兼容测试，如果返回json格式解析失败，有可能是以下版本，所以认为不大于7.x
  			return false;
  		}
  	}
  }
  