diff --git a/.travis.yml b/.travis.yml
index 925c504..bddd709 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,8 +6,9 @@ jdk:
- oraclejdk8
env:
matrix:
- - GEOTOOLS_VERSION='20.2' GEOSERVER_VERSION='2.14.2' ES_VERSION='6.6.1'
- - GEOTOOLS_VERSION='20.2' GEOSERVER_VERSION='2.14.2' ES_VERSION='5.6.15' ARGS='-Ddocker.image=elasticsearch'
+ - GEOTOOLS_VERSION='20.2' GEOSERVER_VERSION='2.14.2' ES_VERSION='7.0.1'
+ - GEOTOOLS_VERSION='20.2' GEOSERVER_VERSION='2.14.2' ES_VERSION='6.7.2'
+ - GEOTOOLS_VERSION='20.2' GEOSERVER_VERSION='2.14.2' ES_VERSION='5.6.15'
- GEOTOOLS_VERSION='20.2' GEOSERVER_VERSION='2.14.2' ES_VERSION='2.4.4' ARGS='-Ddocker.image=elasticsearch'
cache:
directories:
diff --git a/gt-elasticsearch/pom.xml b/gt-elasticsearch/pom.xml
index 09e7a7a..34949a3 100644
--- a/gt-elasticsearch/pom.xml
+++ b/gt-elasticsearch/pom.xml
@@ -168,6 +168,7 @@
-Xmx512m -Xms512m
single-node
+ false
9200:9200
diff --git a/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticFeatureSource.java b/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticFeatureSource.java
index 597c6c7..a158b97 100644
--- a/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticFeatureSource.java
+++ b/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticFeatureSource.java
@@ -192,7 +192,8 @@ private ElasticRequest prepareSearchRequest(Query query, boolean scroll) throws
searchRequest.setQuery(queryBuilder);
if (isSort(query) && nativeQueryBuilder.equals(ElasticConstants.MATCH_ALL)) {
- searchRequest.addSort("_uid", naturalSortOrder);
+ final String sortKey = dataStore.getClient().getVersion() < 7 ? "_uid" : "_id";
+ searchRequest.addSort(sortKey, naturalSortOrder);
}
if (filterToElastic.getAggregations() != null) {
diff --git a/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticMappings.java b/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticMappings.java
index eb690d4..5a540c6 100644
--- a/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticMappings.java
+++ b/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticMappings.java
@@ -17,6 +17,10 @@ public Map getMappings() {
return mappings;
}
+ public void setMappings(Map mappings) {
+ this.mappings = mappings;
+ }
+
@JsonIgnoreProperties(ignoreUnknown=true)
public static class Mapping {
@@ -27,4 +31,13 @@ public Map getProperties() {
}
}
+ public static class Untyped {
+
+ private Mapping mappings;
+
+ public Mapping getMappings() {
+ return mappings;
+ }
+ }
+
}
diff --git a/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticResults.java b/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticResults.java
index dc62f59..79a0ac8 100644
--- a/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticResults.java
+++ b/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticResults.java
@@ -4,6 +4,7 @@
*/
package mil.nga.giat.data.elasticsearch;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -13,6 +14,7 @@
@JsonIgnoreProperties(ignoreUnknown=true)
public class ElasticResults {
+ @JsonDeserialize(using = TotalDeserializer.class)
private Long total;
@JsonProperty("max_score")
diff --git a/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/RestElasticClient.java b/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/RestElasticClient.java
index 98d2e52..ee807b9 100644
--- a/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/RestElasticClient.java
+++ b/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/RestElasticClient.java
@@ -43,7 +43,7 @@
public class RestElasticClient implements ElasticClient {
- final static double DEFAULT_VERSION = 6.0;
+ final static double DEFAULT_VERSION = 7.0;
private final static Logger LOGGER = Logging.getLogger(RestElasticClient.class);
@@ -108,8 +108,11 @@ public List getTypes(String indexName) throws IOException {
public Map getMapping(String indexName, String type) throws IOException {
final Map mappings = getMappings(indexName, type);
final Map properties;
- if (mappings.containsKey(type)) {
+ if (getVersion() < 7 && mappings.containsKey(type)) {
properties = mappings.get(type).getProperties();
+ } else if (getVersion() >= 7) {
+ final Mapping mapping = mappings.values().stream().findFirst().orElse(null);
+ properties = mapping != null ? mapping.getProperties() : null;
} else {
properties = null;
}
@@ -120,7 +123,7 @@ private Map getMappings(String indexName, String type) throws I
final Response response;
try {
final StringBuilder path = new StringBuilder("/").append(indexName).append("/_mapping");
- if (type != null) {
+ if (type != null && getVersion() < 7) {
path.append("/").append(type);
}
response = performRequest("GET", path.toString(), null, true);
@@ -131,14 +134,34 @@ private Map getMappings(String indexName, String type) throws I
throw e;
}
+ final String aliasedIndex = getIndices(indexName).stream().findFirst().orElse(null);
+
try (final InputStream inputStream = response.getEntity().getContent()) {
final Map values;
- values = this.mapper.readValue(inputStream, new TypeReference