diff --git a/pom.xml b/pom.xml
index 06c7d4508..41134a82c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
3.2.1
2.6
- 1.7.3
+ 2.2.0
1.12.0.BUILD-SNAPSHOT
@@ -108,12 +108,12 @@
${spring}
test
-
- org.apache.openwebbeans.test
- cditest-owb
- ${webbeans}
- test
-
+
+
+
+
+
+
javax.servlet
servlet-api
@@ -128,12 +128,19 @@
test
-
- org.codehaus.groovy
- groovy-all
- 2.3.5
- test
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/NodeClientFactoryBean.java b/src/main/java/org/springframework/data/elasticsearch/client/NodeClientFactoryBean.java
index 73d131631..06e7d8d09 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/NodeClientFactoryBean.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/NodeClientFactoryBean.java
@@ -18,13 +18,11 @@ package org.springframework.data.elasticsearch.client;
import static org.elasticsearch.node.NodeBuilder.*;
import java.io.IOException;
+import java.nio.file.Paths;
import org.apache.commons.lang.StringUtils;
-import org.apache.lucene.util.IOUtils;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.node.NodeClient;
-import org.elasticsearch.common.io.stream.InputStreamStreamInput;
-import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,6 +46,7 @@ public class NodeClientFactoryBean implements FactoryBean, Initializ
private String clusterName;
private NodeClient nodeClient;
private String pathData;
+ private String pathHome;
private String pathConfiguration;
NodeClientFactoryBean() {
@@ -74,24 +73,23 @@ public class NodeClientFactoryBean implements FactoryBean, Initializ
@Override
public void afterPropertiesSet() throws Exception {
- ImmutableSettings.Builder settings = ImmutableSettings.settingsBuilder()
- .put(loadConfig())
+ nodeClient = (NodeClient) nodeBuilder().settings(Settings.builder().put(loadConfig())
.put("http.enabled", String.valueOf(this.enableHttp))
- .put("path.data", this.pathData);
-
- nodeClient = (NodeClient) nodeBuilder().settings(settings).clusterName(this.clusterName).local(this.local).node()
+ .put("path.home", this.pathHome)
+ .put("path.data", this.pathData))
+ .clusterName(this.clusterName).local(this.local).node()
.client();
}
private Settings loadConfig() {
if (StringUtils.isNotBlank(pathConfiguration)) {
try {
- return ImmutableSettings.builder().loadFromUrl(new ClassPathResource(pathConfiguration).getURL()).build();
+ return Settings.builder().loadFromPath(Paths.get(new ClassPathResource(pathConfiguration).getURI())).build();
} catch (IOException e) {
logger.error(String.format("Unable to read node configuration from file [%s]", pathConfiguration), e);
}
}
- return ImmutableSettings.builder().build();
+ return Settings.builder().build();
}
public void setLocal(boolean local) {
@@ -110,6 +108,10 @@ public class NodeClientFactoryBean implements FactoryBean, Initializ
this.pathData = pathData;
}
+ public void setPathHome(String pathHome) {
+ this.pathHome = pathHome;
+ }
+
public void setPathConfiguration(String configuration) {
this.pathConfiguration = configuration;
}
diff --git a/src/main/java/org/springframework/data/elasticsearch/client/TransportClientFactoryBean.java b/src/main/java/org/springframework/data/elasticsearch/client/TransportClientFactoryBean.java
index 3e91ba0c2..73170727e 100644
--- a/src/main/java/org/springframework/data/elasticsearch/client/TransportClientFactoryBean.java
+++ b/src/main/java/org/springframework/data/elasticsearch/client/TransportClientFactoryBean.java
@@ -16,8 +16,8 @@
package org.springframework.data.elasticsearch.client;
import static org.apache.commons.lang.StringUtils.*;
-import static org.elasticsearch.common.settings.ImmutableSettings.*;
+import java.net.InetAddress;
import java.util.Properties;
import org.elasticsearch.client.transport.TransportClient;
@@ -86,7 +86,7 @@ public class TransportClientFactoryBean implements FactoryBean,
}
protected void buildClient() throws Exception {
- client = new TransportClient(settings());
+ client = TransportClient.builder().settings(settings()).build();
Assert.hasText(clusterNodes, "[Assertion failed] clusterNodes settings missing.");
for (String clusterNode : split(clusterNodes, COMMA)) {
String hostName = substringBefore(clusterNode, COLON);
@@ -94,16 +94,16 @@ public class TransportClientFactoryBean implements FactoryBean,
Assert.hasText(hostName, "[Assertion failed] missing host name in 'clusterNodes'");
Assert.hasText(port, "[Assertion failed] missing port in 'clusterNodes'");
logger.info("adding transport node : " + clusterNode);
- client.addTransportAddress(new InetSocketTransportAddress(hostName, Integer.valueOf(port)));
+ client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port)));
}
client.connectedNodes();
}
private Settings settings() {
if (properties != null) {
- return settingsBuilder().put(properties).build();
+ return Settings.builder().put(properties).build();
}
- return settingsBuilder()
+ return Settings.builder()
.put("cluster.name", clusterName)
.put("client.transport.sniff", clientTransportSniff)
.put("client.transport.ignore_cluster_name", clientIgnoreClusterName)
diff --git a/src/main/java/org/springframework/data/elasticsearch/config/NodeClientBeanDefinitionParser.java b/src/main/java/org/springframework/data/elasticsearch/config/NodeClientBeanDefinitionParser.java
index 4587e6f51..b2878040d 100644
--- a/src/main/java/org/springframework/data/elasticsearch/config/NodeClientBeanDefinitionParser.java
+++ b/src/main/java/org/springframework/data/elasticsearch/config/NodeClientBeanDefinitionParser.java
@@ -44,6 +44,7 @@ public class NodeClientBeanDefinitionParser extends AbstractBeanDefinitionParser
builder.addPropertyValue("clusterName", element.getAttribute("cluster-name"));
builder.addPropertyValue("enableHttp", Boolean.valueOf(element.getAttribute("http-enabled")));
builder.addPropertyValue("pathData", element.getAttribute("path-data"));
+ builder.addPropertyValue("pathHome", element.getAttribute("path-home"));
builder.addPropertyValue("pathConfiguration", element.getAttribute("path-configuration"));
}
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/CriteriaFilterProcessor.java b/src/main/java/org/springframework/data/elasticsearch/core/CriteriaFilterProcessor.java
index 61db00262..514cf5242 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/CriteriaFilterProcessor.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/CriteriaFilterProcessor.java
@@ -15,7 +15,6 @@
*/
package org.springframework.data.elasticsearch.core;
-import static org.elasticsearch.index.query.FilterBuilders.*;
import static org.springframework.data.elasticsearch.core.query.Criteria.*;
import java.util.Iterator;
@@ -23,9 +22,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
-import org.elasticsearch.index.query.FilterBuilder;
-import org.elasticsearch.index.query.GeoBoundingBoxFilterBuilder;
-import org.elasticsearch.index.query.GeoDistanceFilterBuilder;
+import org.elasticsearch.common.geo.GeoDistance;
+import org.elasticsearch.index.query.*;
import org.springframework.data.elasticsearch.core.geo.GeoBox;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.data.elasticsearch.core.query.Criteria;
@@ -43,20 +41,23 @@ import org.springframework.util.Assert;
class CriteriaFilterProcessor {
- FilterBuilder createFilterFromCriteria(Criteria criteria) {
- List fbList = new LinkedList();
- FilterBuilder filter = null;
+ QueryBuilder createFilterFromCriteria(Criteria criteria) {
+ List fbList = new LinkedList();
+ QueryBuilder filter = null;
ListIterator chainIterator = criteria.getCriteriaChain().listIterator();
while (chainIterator.hasNext()) {
- FilterBuilder fb = null;
+ QueryBuilder fb = null;
Criteria chainedCriteria = chainIterator.next();
if (chainedCriteria.isOr()) {
- fb = orFilter(createFilterFragmentForCriteria(chainedCriteria).toArray(new FilterBuilder[]{}));
+ fb = QueryBuilders.boolQuery();
+ for(QueryBuilder f: createFilterFragmentForCriteria(chainedCriteria)){
+ ((BoolQueryBuilder)fb).should(f);
+ }
fbList.add(fb);
} else if (chainedCriteria.isNegating()) {
- List negationFilters = buildNegationFilter(criteria.getField().getName(), criteria.getFilterCriteriaEntries().iterator());
+ List negationFilters = buildNegationFilter(criteria.getField().getName(), criteria.getFilterCriteriaEntries().iterator());
if (!negationFilters.isEmpty()) {
fbList.addAll(negationFilters);
@@ -70,21 +71,23 @@ class CriteriaFilterProcessor {
if (fbList.size() == 1) {
filter = fbList.get(0);
} else {
- filter = andFilter(fbList.toArray(new FilterBuilder[]{}));
+ filter = QueryBuilders.boolQuery();
+ for(QueryBuilder f: fbList) {
+ ((BoolQueryBuilder)filter).must(f);
+ }
}
}
-
return filter;
}
- private List createFilterFragmentForCriteria(Criteria chainedCriteria) {
+ private List createFilterFragmentForCriteria(Criteria chainedCriteria) {
Iterator it = chainedCriteria.getFilterCriteriaEntries().iterator();
- List filterList = new LinkedList();
+ List filterList = new LinkedList();
String fieldName = chainedCriteria.getField().getName();
Assert.notNull(fieldName, "Unknown field");
- FilterBuilder filter = null;
+ QueryBuilder filter = null;
while (it.hasNext()) {
Criteria.CriteriaEntry entry = it.next();
@@ -96,15 +99,15 @@ class CriteriaFilterProcessor {
}
- private FilterBuilder processCriteriaEntry(OperationKey key, Object value, String fieldName) {
+ private QueryBuilder processCriteriaEntry(OperationKey key, Object value, String fieldName) {
if (value == null) {
return null;
}
- FilterBuilder filter = null;
+ QueryBuilder filter = null;
switch (key) {
case WITHIN: {
- filter = geoDistanceFilter(fieldName);
+ filter = QueryBuilders.geoDistanceRangeQuery(fieldName);
Assert.isTrue(value instanceof Object[], "Value of a geo distance filter should be an array of two values.");
Object[] valArray = (Object[]) value;
@@ -123,17 +126,17 @@ class CriteriaFilterProcessor {
if (valArray[0] instanceof GeoPoint) {
GeoPoint loc = (GeoPoint) valArray[0];
- ((GeoDistanceFilterBuilder) filter).lat(loc.getLat()).lon(loc.getLon()).distance(dist.toString());
+ ((GeoDistanceRangeQueryBuilder) filter).lat(loc.getLat()).lon(loc.getLon()).geoDistance(GeoDistance.fromString(dist.toString()));
} else if (valArray[0] instanceof Point) {
GeoPoint loc = GeoPoint.fromPoint((Point) valArray[0]);
- ((GeoDistanceFilterBuilder) filter).lat(loc.getLat()).lon(loc.getLon()).distance(dist.toString());
+ ((GeoDistanceRangeQueryBuilder) filter).lat(loc.getLat()).lon(loc.getLon()).geoDistance(GeoDistance.fromString(dist.toString()));
} else {
String loc = (String) valArray[0];
if (loc.contains(",")) {
String c[] = loc.split(",");
- ((GeoDistanceFilterBuilder) filter).lat(Double.parseDouble(c[0])).lon(Double.parseDouble(c[1])).distance(dist.toString());
+ ((GeoDistanceRangeQueryBuilder) filter).lat(Double.parseDouble(c[0])).lon(Double.parseDouble(c[1])).geoDistance(GeoDistance.fromString(dist.toString()));
} else {
- ((GeoDistanceFilterBuilder) filter).geohash(loc).distance(dist.toString());
+ ((GeoDistanceRangeQueryBuilder) filter).geohash(loc).geoDistance(GeoDistance.fromString(dist.toString()));
}
}
@@ -141,7 +144,7 @@ class CriteriaFilterProcessor {
}
case BBOX: {
- filter = geoBoundingBoxFilter(fieldName);
+ filter = QueryBuilders.geoBoundingBoxQuery(fieldName);
Assert.isTrue(value instanceof Object[], "Value of a boundedBy filter should be an array of one or two values.");
Object[] valArray = (Object[]) value;
@@ -149,11 +152,11 @@ class CriteriaFilterProcessor {
if (valArray.length == 1) {
//GeoEnvelop
- oneParameterBBox((GeoBoundingBoxFilterBuilder) filter, valArray[0]);
+ oneParameterBBox((GeoBoundingBoxQueryBuilder) filter, valArray[0]);
} else if (valArray.length == 2) {
//2x GeoPoint
//2x String
- twoParameterBBox((GeoBoundingBoxFilterBuilder) filter, valArray);
+ twoParameterBBox((GeoBoundingBoxQueryBuilder) filter, valArray);
} else {
//error
Assert.isTrue(false, "Geo distance filter takes a 1-elements array(GeoBox) or 2-elements array(GeoPoints or Strings(format lat,lon or geohash)).");
@@ -188,7 +191,7 @@ class CriteriaFilterProcessor {
}
}
- private void oneParameterBBox(GeoBoundingBoxFilterBuilder filter, Object value) {
+ private void oneParameterBBox(GeoBoundingBoxQueryBuilder filter, Object value) {
Assert.isTrue(value instanceof GeoBox || value instanceof Box, "single-element of boundedBy filter must be type of GeoBox or Box");
GeoBox geoBBox;
@@ -212,7 +215,7 @@ class CriteriaFilterProcessor {
return true;
}
- private void twoParameterBBox(GeoBoundingBoxFilterBuilder filter, Object[] values) {
+ private void twoParameterBBox(GeoBoundingBoxQueryBuilder filter, Object[] values) {
Assert.isTrue(isType(values, GeoPoint.class) || isType(values, String.class), " both elements of boundedBy filter must be type of GeoPoint or String(format lat,lon or geohash)");
if (values[0] instanceof GeoPoint) {
GeoPoint topLeft = (GeoPoint) values[0];
@@ -227,12 +230,12 @@ class CriteriaFilterProcessor {
}
}
- private List buildNegationFilter(String fieldName, Iterator it) {
- List notFilterList = new LinkedList();
+ private List buildNegationFilter(String fieldName, Iterator it) {
+ List notFilterList = new LinkedList();
while (it.hasNext()) {
Criteria.CriteriaEntry criteriaEntry = it.next();
- FilterBuilder notFilter = notFilter(processCriteriaEntry(criteriaEntry.getKey(), criteriaEntry.getValue(), fieldName));
+ QueryBuilder notFilter = QueryBuilders.boolQuery().mustNot(processCriteriaEntry(criteriaEntry.getKey(), criteriaEntry.getValue(), fieldName));
notFilterList.add(notFilter);
}
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessor.java b/src/main/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessor.java
index f91d8c348..e0207d900 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessor.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/CriteriaQueryProcessor.java
@@ -148,19 +148,19 @@ class CriteriaQueryProcessor {
switch (key) {
case EQUALS:
- query = queryString(searchText).field(fieldName).defaultOperator(QueryStringQueryBuilder.Operator.AND);
+ query = queryStringQuery(searchText).field(fieldName).defaultOperator(QueryStringQueryBuilder.Operator.AND);
break;
case CONTAINS:
- query = queryString("*" + searchText + "*").field(fieldName).analyzeWildcard(true);
+ query = queryStringQuery("*" + searchText + "*").field(fieldName).analyzeWildcard(true);
break;
case STARTS_WITH:
- query = queryString(searchText + "*").field(fieldName).analyzeWildcard(true);
+ query = queryStringQuery(searchText + "*").field(fieldName).analyzeWildcard(true);
break;
case ENDS_WITH:
- query = queryString("*" + searchText).field(fieldName).analyzeWildcard(true);
+ query = queryStringQuery("*" + searchText).field(fieldName).analyzeWildcard(true);
break;
case EXPRESSION:
- query = queryString(searchText).field(fieldName);
+ query = queryStringQuery(searchText).field(fieldName);
break;
case LESS_EQUAL:
query = rangeQuery(fieldName).lte(value);
@@ -185,14 +185,14 @@ class CriteriaQueryProcessor {
query = boolQuery();
collection = (Iterable