Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f7f1a02

Browse files
committed
Merge commit '5b2406ae0979ef74d9f5cca6fe5743d0201e8ed7' into elastic2.0
2 parents 42f115d + 5b2406a commit f7f1a02

File tree

6 files changed

+42
-13
lines changed

6 files changed

+42
-13
lines changed

src/main/java/org/nlpcn/es4sql/domain/hints/HintFactory.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ public static Hint getHintFromString(String hintAsString){
5757
}
5858
return new Hint(HintType.DOCS_WITH_AGGREGATION, params);
5959
}
60+
if(hintAsString.startsWith("! ROUTINGS")) {
61+
String[] hints = getParamsFromHint(hintAsString,"! ROUTINGS");
62+
return new Hint(HintType.ROUTINGS,hints);
63+
}
6064

6165
return null;
6266
}

src/main/java/org/nlpcn/es4sql/domain/hints/HintType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ public enum HintType
1414
NL_MULTISEARCH_SIZE,
1515
USE_SCROLL,
1616
IGNORE_UNAVAILABLE,
17-
DOCS_WITH_AGGREGATION;
17+
DOCS_WITH_AGGREGATION,
18+
ROUTINGS;
1819
}

src/main/java/org/nlpcn/es4sql/query/AggregationQueryAction.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,9 @@
1010
import org.elasticsearch.index.query.QueryBuilder;
1111
import org.elasticsearch.index.query.QueryBuilders;
1212
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
13-
import org.elasticsearch.search.aggregations.Aggregation;
1413
import org.elasticsearch.search.aggregations.AggregationBuilder;
1514
import org.elasticsearch.search.aggregations.AggregationBuilders;
1615
import org.elasticsearch.search.aggregations.bucket.nested.NestedBuilder;
17-
import org.elasticsearch.search.aggregations.bucket.nested.ReverseNested;
18-
import org.elasticsearch.search.aggregations.bucket.nested.ReverseNestedBuilder;
1916
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
2017
import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
2118
import org.elasticsearch.search.sort.SortOrder;
@@ -143,7 +140,7 @@ public SqlElasticSearchRequestBuilder explain() throws SqlParseException {
143140
setLimitFromHint(this.select.getHints());
144141

145142
request.setSearchType(SearchType.DEFAULT);
146-
updateWithIndicesOptionsIfNeeded(select,request);
143+
updateRequestWithIndexAndRoutingOptions(select, request);
147144
SqlElasticSearchRequestBuilder sqlElasticRequestBuilder = new SqlElasticSearchRequestBuilder(request);
148145
return sqlElasticRequestBuilder;
149146
}

src/main/java/org/nlpcn/es4sql/query/DefaultQueryAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,10 @@ public SqlElasticSearchRequestBuilder explain() throws SqlParseException {
4646
if(!usedScroll){
4747
request.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
4848
}
49-
updateWithIndicesOptionsIfNeeded(select,request);
49+
updateRequestWithIndexAndRoutingOptions(select, request);
5050

5151
SqlElasticSearchRequestBuilder sqlElasticRequestBuilder = new SqlElasticSearchRequestBuilder(request);
52+
5253
return sqlElasticRequestBuilder;
5354
}
5455

src/main/java/org/nlpcn/es4sql/query/QueryAction.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import org.nlpcn.es4sql.domain.hints.HintType;
1111
import org.nlpcn.es4sql.exception.SqlParseException;
1212

13+
import java.util.ArrayList;
14+
1315
/**
1416
* Abstract class. used to transform Select object (Represents SQL query) to
1517
* SearchRequestBuilder (Represents ES query)
@@ -26,17 +28,21 @@ public QueryAction(Client client, Query query) {
2628
this.query = query;
2729
}
2830

29-
protected void updateWithIndicesOptionsIfNeeded(Select select,SearchRequestBuilder request) {
30-
boolean ignore = false;
31+
protected void updateRequestWithIndexAndRoutingOptions(Select select, SearchRequestBuilder request) {
3132
for(Hint hint : select.getHints()){
3233
if(hint.getType() == HintType.IGNORE_UNAVAILABLE){
33-
ignore = true;
34-
break;
34+
//saving the defaults from TransportClient search
35+
request.setIndicesOptions(IndicesOptions.fromOptions(true, false, true, false, IndicesOptions.strictExpandOpenAndForbidClosed()));
36+
}
37+
if(hint.getType() == HintType.ROUTINGS){
38+
Object[] routings = hint.getParams();
39+
String[] routingsAsStringArray = new String[routings.length];
40+
for(int i=0;i<routings.length;i++){
41+
routingsAsStringArray[i]=routings[i].toString();
42+
}
43+
request.setRouting(routingsAsStringArray);
3544
}
3645
}
37-
if(ignore)
38-
//saving the defaults from TransportClient search
39-
request.setIndicesOptions(IndicesOptions.fromOptions(true, false, true, false, IndicesOptions.strictExpandOpenAndForbidClosed()));
4046
}
4147

4248

src/test/java/org/nlpcn/es4sql/QueryTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -827,6 +827,20 @@ public void multipleIndicesOneNotExistWithoutHint() throws IOException, SqlParse
827827
Assert.assertTrue(response.getTotalHits() > 0);
828828
}
829829

830+
@Test
831+
public void routingRequestOneRounting() throws IOException, SqlParseException, SQLFeatureNotSupportedException{
832+
SqlElasticSearchRequestBuilder request = getRequestBuilder(String.format("SELECT /*! ROUTINGS(hey) */ * FROM %s/account ", TEST_INDEX));
833+
SearchRequestBuilder searchRequestBuilder = (SearchRequestBuilder) request.getBuilder();
834+
Assert.assertEquals("hey",searchRequestBuilder.request().routing());
835+
}
836+
837+
@Test
838+
public void routingRequestMultipleRountings() throws IOException, SqlParseException, SQLFeatureNotSupportedException{
839+
SqlElasticSearchRequestBuilder request = getRequestBuilder(String.format("SELECT /*! ROUTINGS(hey,bye) */ * FROM %s/account ", TEST_INDEX));
840+
SearchRequestBuilder searchRequestBuilder = (SearchRequestBuilder) request.getBuilder();
841+
Assert.assertEquals("hey,bye",searchRequestBuilder.request().routing());
842+
}
843+
830844
//todo: find a way to check if scripts are enabled , uncomment before deploy.
831845
// @Test
832846
// public void scriptFilterNoParams() throws IOException, SqlParseException, SQLFeatureNotSupportedException{
@@ -851,6 +865,12 @@ private SearchHits query(String query) throws SqlParseException, SQLFeatureNotSu
851865
return ((SearchResponse)select.get()).getHits();
852866
}
853867

868+
869+
private SqlElasticSearchRequestBuilder getRequestBuilder(String query) throws SqlParseException, SQLFeatureNotSupportedException, SQLFeatureNotSupportedException {
870+
SearchDao searchDao = MainTestSuite.getSearchDao();
871+
return (SqlElasticSearchRequestBuilder) searchDao.explain(query).explain();
872+
}
873+
854874
private SearchResponse getSearchResponse(String query) throws SqlParseException, SQLFeatureNotSupportedException, SQLFeatureNotSupportedException {
855875
SearchDao searchDao = MainTestSuite.getSearchDao();
856876
SqlElasticSearchRequestBuilder select = (SqlElasticSearchRequestBuilder) searchDao.explain(query).explain();

0 commit comments

Comments
 (0)