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
+