diff --git a/easy-es-core/pom.xml b/easy-es-core/pom.xml index 11aaa7f46c5d3ab48b8f8886fddb559c977397ee..c4ff5b6ab1e0bfa98d0689c4391f79ce5dc2586e 100644 --- a/easy-es-core/pom.xml +++ b/easy-es-core/pom.xml @@ -54,6 +54,12 @@ org.elasticsearch elasticsearch ${elasticsearch.version} + + + log4j-api + org.apache.logging.log4j + + @@ -74,11 +80,19 @@ org.apache.logging.log4j log4j-core + ${log4j2.version} + + + log4j-api + org.apache.logging.log4j + + org.apache.logging.log4j log4j-api + ${log4j2.version} commons-logging diff --git a/easy-es-core/src/main/java/indi/felix/easy/core/elastic/rest/BaseRest.java b/easy-es-core/src/main/java/indi/felix/easy/core/elastic/rest/BaseRest.java index 97c11bddd2e98baef6aff1047b7778aee3eb24c7..bac6bea8acee03b9fb3bb230ebf3168b59817916 100644 --- a/easy-es-core/src/main/java/indi/felix/easy/core/elastic/rest/BaseRest.java +++ b/easy-es-core/src/main/java/indi/felix/easy/core/elastic/rest/BaseRest.java @@ -1,6 +1,9 @@ package indi.felix.easy.core.elastic.rest; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import indi.felix.easy.core.elastic.client.RequestHelper; +import indi.felix.easy.core.elastic.utool.Const; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.apache.http.Header; @@ -29,9 +32,33 @@ public abstract class BaseRest { public static final String GET = "GET", POST = "POST", PUT = "PUT", DELETE = "DELETE", HEAD = "HEAD"; + public String version; + public String defaultDocType; protected BaseRest(RestClient restClient) { this.restClient = restClient; + + this.version = getVersion(); + if (compareVersion(this.version, "7.0.0") > 0) { + // 7.x 版本中_doc 为默认路径 + defaultDocType = "_doc"; + } else { + defaultDocType = Const.DOC_TYPE; + } + } + + + /** + * 获取ES版本号 + * + * @return + */ + public String getVersion() { + String json = responseBody(GET, ""); + JSONObject jsonObject = JSON.parseObject(json); + JSONObject versionJson = jsonObject != null ? jsonObject.getJSONObject("version") : null; + String version = versionJson != null ? versionJson.getString("number") : null; + return version; } public String responseBody(String method, String endpoint) { @@ -130,4 +157,44 @@ public abstract class BaseRest { return response; } + /** + * 版本号比较 + * + * @param v1 + * @param v2 + * @return 0代表相等,1代表左边大,-1代表右边大 + * Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1 + */ + public int compareVersion(String v1, String v2) { + if (v1.equals(v2)) { + return 0; + } + String[] version1Array = v1.split("[._]"); + String[] version2Array = v2.split("[._]"); + int index = 0; + int minLen = Math.min(version1Array.length, version2Array.length); + long diff = 0; + + while (index < minLen + && (diff = Long.parseLong(version1Array[index]) + - Long.parseLong(version2Array[index])) == 0) { + index++; + } + if (diff == 0) { + for (int i = index; i < version1Array.length; i++) { + if (Long.parseLong(version1Array[i]) > 0) { + return 1; + } + } + + for (int i = index; i < version2Array.length; i++) { + if (Long.parseLong(version2Array[i]) > 0) { + return -1; + } + } + return 0; + } else { + return diff > 0 ? 1 : -1; + } + } } diff --git a/easy-es-core/src/test/java/indi/felix/easy/core/elastic/rest/BaseRestTest.java b/easy-es-core/src/test/java/indi/felix/easy/core/elastic/rest/BaseRestTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c975469b98286db4c163597f633b230e291b2886 --- /dev/null +++ b/easy-es-core/src/test/java/indi/felix/easy/core/elastic/rest/BaseRestTest.java @@ -0,0 +1,13 @@ +package indi.felix.easy.core.elastic.rest; + +import indi.felix.easy.core.elastic.EasyEs; +import junit.framework.TestCase; + +public class BaseRestTest extends TestCase { + + public void testGetVersion() { + EasyEs es = new EasyEs("localhost:9200"); + String version = es.rest().getVersion(); + System.out.println(version); + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index fbf4c26cac84a801aab87b7ad753879232231ebc..f21f4b416fcc47106ab4aacb47bc1b0820587e1e 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,7 @@ 1.7 3.4.2 2.4.1 + 2.15.0 @@ -70,7 +71,21 @@ ${junit.version} test - + + org.apache.logging.log4j + log4j-core + ${log4j2.version} + pom + import + + + + org.apache.logging.log4j + log4j-api + ${log4j2.version} + pom + import +