Skip to content

Commit 87094f7

Browse files
committed
es 5.4.0 support
1 parent 0ea8ff9 commit 87094f7

21 files changed

+164
-178
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ before_install:
1717
# update to java 8
1818
- sudo update-java-alternatives -s java-8-oracle
1919
- export JAVA_HOME=/usr/lib/jvm/java-8-oracle
20-
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.2.deb && sudo dpkg -i --force-confnew elasticsearch-5.3.2.deb
20+
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.deb && sudo dpkg -i --force-confnew elasticsearch-5.4.0.deb
2121
- sudo cp ./src/test/resources/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml
2222
- sudo cat /etc/elasticsearch/elasticsearch.yml
2323
- sudo java -version

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>org.nlpcn</groupId>
55
<artifactId>elasticsearch-sql</artifactId>
6-
<version>5.3.2.0</version>
6+
<version>5.4.0.0</version>
77
<packaging>jar</packaging>
88
<description>Query elasticsearch using SQL</description>
99
<name>elasticsearch-sql</name>
@@ -47,7 +47,7 @@
4747
<elasticsearch.plugin.name>sql</elasticsearch.plugin.name>
4848
<elasticsearch.plugin.site>true</elasticsearch.plugin.site>
4949
<elasticsearch.plugin.jvm>true</elasticsearch.plugin.jvm>
50-
<elasticsearch.version>5.3.2</elasticsearch.version>
50+
<elasticsearch.version>5.4.0</elasticsearch.version>
5151
<elasticsearch.plugin.classname>org.elasticsearch.plugin.nlpcn.SqlPlug</elasticsearch.plugin.classname>
5252
</properties>
5353

src/main/java/org/elasticsearch/plugin/nlpcn/ComperableHitResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class ComperableHitResult {
1919
private Map<String,Object> flattenMap;
2020
public ComperableHitResult(SearchHit hit , String[] fieldsOrder ,String seperator) {
2121
this.hit = hit;
22-
Map<String, Object> hitAsMap = hit.sourceAsMap();
22+
Map<String, Object> hitAsMap = hit.getSourceAsMap();
2323
this.flattenMap = new HashMap<>();
2424
List<String> results = new ArrayList<>();
2525
this.isAllNull = true;

src/main/java/org/elasticsearch/plugin/nlpcn/ElasticJoinExecutor.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
import org.elasticsearch.rest.RestStatus;
1717
import org.elasticsearch.search.SearchHit;
1818
import org.elasticsearch.search.SearchHits;
19-
import org.elasticsearch.search.internal.InternalSearchHit;
20-
import org.elasticsearch.search.internal.InternalSearchHits;
2119
import org.elasticsearch.search.sort.FieldSortBuilder;
2220
import org.elasticsearch.search.sort.SortOrder;
2321
import org.nlpcn.es4sql.domain.Field;
@@ -62,16 +60,16 @@ public void sendResponse(RestChannel channel){
6260

6361
public void run() throws IOException, SqlParseException {
6462
long timeBefore = System.currentTimeMillis();
65-
List<InternalSearchHit> combinedSearchHits = innerRun();
63+
List<SearchHit> combinedSearchHits = innerRun();
6664
int resultsSize = combinedSearchHits.size();
67-
InternalSearchHit[] hits = combinedSearchHits.toArray(new InternalSearchHit[resultsSize]);
68-
this.results = new InternalSearchHits(hits, resultsSize,1.0f);
65+
SearchHit[] hits = combinedSearchHits.toArray(new SearchHit[resultsSize]);
66+
this.results = new SearchHits(hits, resultsSize,1.0f);
6967
long joinTimeInMilli = System.currentTimeMillis() - timeBefore;
7068
this.metaResults.setTookImMilli(joinTimeInMilli);
7169
}
7270

7371

74-
protected abstract List<InternalSearchHit> innerRun() throws IOException, SqlParseException ;
72+
protected abstract List<SearchHit> innerRun() throws IOException, SqlParseException ;
7573

7674
public SearchHits getHits(){
7775
return results;
@@ -91,7 +89,7 @@ else if (requestBuilder instanceof NestedLoopsElasticRequestBuilder){
9189
}
9290
}
9391

94-
protected void mergeSourceAndAddAliases(Map<String,Object> secondTableHitSource, InternalSearchHit searchHit,String t1Alias,String t2Alias) {
92+
protected void mergeSourceAndAddAliases(Map<String,Object> secondTableHitSource, SearchHit searchHit,String t1Alias,String t2Alias) {
9593
Map<String,Object> results = mapWithAliases(searchHit.getSource(), t1Alias);
9694
results.putAll(mapWithAliases(secondTableHitSource, t2Alias));
9795
searchHit.getSource().clear();
@@ -146,14 +144,14 @@ protected Object deepSearchInMap(Map<String, Object> fieldsMap, String name) {
146144
}
147145

148146

149-
protected void addUnmatchedResults(List<InternalSearchHit> combinedResults, Collection<SearchHitsResult> firstTableSearchHits, List<Field> secondTableReturnedFields,int currentNumOfIds, int totalLimit,String t1Alias,String t2Alias) {
147+
protected void addUnmatchedResults(List<SearchHit> combinedResults, Collection<SearchHitsResult> firstTableSearchHits, List<Field> secondTableReturnedFields,int currentNumOfIds, int totalLimit,String t1Alias,String t2Alias) {
150148
boolean limitReached = false;
151149
for(SearchHitsResult hitsResult : firstTableSearchHits){
152150
if(!hitsResult.isMatchedWithOtherTable())
153-
for (InternalSearchHit hit : hitsResult.getSearchHits()) {
151+
for (SearchHit hit : hitsResult.getSearchHits()) {
154152

155153
//todo: decide which id to put or type. or maby its ok this way. just need to doc.
156-
InternalSearchHit unmachedResult = createUnmachedResult(secondTableReturnedFields, hit.docId(), t1Alias, t2Alias, hit);
154+
SearchHit unmachedResult = createUnmachedResult(secondTableReturnedFields, hit.docId(), t1Alias, t2Alias, hit);
157155
combinedResults.add(unmachedResult);
158156
currentNumOfIds++;
159157
if (currentNumOfIds >= totalLimit) {
@@ -166,15 +164,15 @@ protected void addUnmatchedResults(List<InternalSearchHit> combinedResults, Coll
166164
}
167165
}
168166

169-
protected InternalSearchHit createUnmachedResult( List<Field> secondTableReturnedFields, int docId, String t1Alias, String t2Alias, SearchHit hit) {
170-
String unmatchedId = hit.id() + "|0";
167+
protected SearchHit createUnmachedResult( List<Field> secondTableReturnedFields, int docId, String t1Alias, String t2Alias, SearchHit hit) {
168+
String unmatchedId = hit.getId() + "|0";
171169
Text unamatchedType = new Text(hit.getType() + "|null");
172170

173-
InternalSearchHit searchHit = new InternalSearchHit(docId, unmatchedId, unamatchedType, hit.getFields());
171+
SearchHit searchHit = new SearchHit(docId, unmatchedId, unamatchedType, hit.getFields());
174172

175173
searchHit.sourceRef(hit.getSourceRef());
176-
searchHit.sourceAsMap().clear();
177-
searchHit.sourceAsMap().putAll(hit.sourceAsMap());
174+
searchHit.getSourceAsMap().clear();
175+
searchHit.getSourceAsMap().putAll(hit.getSourceAsMap());
178176
Map<String,Object> emptySecondTableHitSource = createNullsSource(secondTableReturnedFields);
179177

180178
mergeSourceAndAddAliases(emptySecondTableHitSource, searchHit,t1Alias,t2Alias);

src/main/java/org/elasticsearch/plugin/nlpcn/ElasticResultHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
public class ElasticResultHandler {
1717
public static Object getFieldValue(SearchHit hit,String field){
18-
return deepSearchInMap(hit.sourceAsMap(),field);
18+
return deepSearchInMap(hit.getSourceAsMap(),field);
1919
}
2020

2121
private static Object deepSearchInMap(Map<String, Object> fieldsMap, String name) {

src/main/java/org/elasticsearch/plugin/nlpcn/ElasticUtils.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,20 @@ public static SearchResponse scrollOneTimeWithHits(Client client, SearchRequestB
4343
public static String hitsAsStringResult(SearchHits results, MetaSearchResult metaResults) throws IOException {
4444
if(results == null) return null;
4545
Object[] searchHits;
46-
searchHits = new Object[(int) results.totalHits()];
46+
searchHits = new Object[(int) results.getTotalHits()];
4747
int i = 0;
4848
for(SearchHit hit : results) {
4949
HashMap<String,Object> value = new HashMap<>();
5050
value.put("_id",hit.getId());
5151
value.put("_type", hit.getType());
52-
value.put("_score", hit.score());
53-
value.put("_source", hit.sourceAsMap());
52+
value.put("_score", hit.getScore());
53+
value.put("_source", hit.getSourceAsMap());
5454
searchHits[i] = value;
5555
i++;
5656
}
5757
HashMap<String,Object> hits = new HashMap<>();
58-
hits.put("total",results.totalHits());
59-
hits.put("max_score",results.maxScore());
58+
hits.put("total",results.getTotalHits());
59+
hits.put("max_score",results.getMaxScore());
6060
hits.put("hits",searchHits);
6161
XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON).prettyPrint();
6262
builder.startObject();

src/main/java/org/elasticsearch/plugin/nlpcn/HashJoinComparisonStructure.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.elasticsearch.plugin.nlpcn;
22

3-
import org.elasticsearch.search.internal.InternalSearchHit;
3+
import org.elasticsearch.search.SearchHit;
44
import org.nlpcn.es4sql.domain.Field;
55

66
import java.util.*;
@@ -32,11 +32,11 @@ public HashMap<String, List<Map.Entry<Field, Field>>> getComparisons() {
3232
return comparisonIDtoComparisonFields;
3333
}
3434

35-
public void insertIntoComparisonHash(String comparisonID,String comparisonKey,InternalSearchHit hit){
35+
public void insertIntoComparisonHash(String comparisonID,String comparisonKey,SearchHit hit){
3636
HashMap<String, SearchHitsResult> comparisonHash = this.comparisonIDtoComparisonHash.get(comparisonID);
3737
SearchHitsResult currentSearchHitsResult = comparisonHash.get(comparisonKey);
3838
if(currentSearchHitsResult == null) {
39-
currentSearchHitsResult = new SearchHitsResult(new ArrayList<InternalSearchHit>(),false);
39+
currentSearchHitsResult = new SearchHitsResult(new ArrayList<SearchHit>(),false);
4040
comparisonHash.put(comparisonKey, currentSearchHitsResult);
4141
}
4242
currentSearchHitsResult.getSearchHits().add(hit);

src/main/java/org/elasticsearch/plugin/nlpcn/HashJoinElasticExecutor.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import org.elasticsearch.index.query.QueryBuilders;
1414
import org.elasticsearch.search.SearchHit;
15-
import org.elasticsearch.search.internal.InternalSearchHit;
1615
import org.elasticsearch.search.sort.FieldSortBuilder;
1716
import org.elasticsearch.search.sort.SortOrder;
1817
import org.nlpcn.es4sql.domain.Field;
@@ -49,7 +48,7 @@ public HashJoinElasticExecutor(Client client, HashJoinElasticRequestBuilder requ
4948
this.alreadyMatched = new HashSet<>();
5049
}
5150

52-
public List<InternalSearchHit> innerRun() throws IOException, SqlParseException {
51+
public List<SearchHit> innerRun() throws IOException, SqlParseException {
5352

5453
Map<String, Map<String, List<Object>>> optimizationTermsFilterStructure =
5554
initOptimizationStructure();
@@ -63,7 +62,7 @@ public List<InternalSearchHit> innerRun() throws IOException, SqlParseException
6362
updateRequestWithTermsFilter(optimizationTermsFilterStructure, secondTableRequest);
6463
}
6564

66-
List<InternalSearchHit> combinedResult = createCombinedResults(secondTableRequest);
65+
List<SearchHit> combinedResult = createCombinedResults(secondTableRequest);
6766

6867
int currentNumOfResults = combinedResult.size();
6968
int totalLimit = requestBuilder.getTotalLimit();
@@ -78,9 +77,9 @@ public List<InternalSearchHit> innerRun() throws IOException, SqlParseException
7877
t2Alias);
7978
}
8079
if(firstTableRequest.getOriginalSelect().isOrderdSelect()){
81-
Collections.sort(combinedResult,new Comparator<InternalSearchHit>() {
80+
Collections.sort(combinedResult,new Comparator<SearchHit>() {
8281
@Override
83-
public int compare(InternalSearchHit o1, InternalSearchHit o2) {
82+
public int compare(SearchHit o1, SearchHit o2) {
8483
return o1.docId() - o2.docId();
8584
}
8685
});
@@ -107,8 +106,8 @@ private void updateFirstTableLimitIfNeeded() {
107106
}
108107
}
109108

110-
private List<InternalSearchHit> createCombinedResults( TableInJoinRequestBuilder secondTableRequest) {
111-
List<InternalSearchHit> combinedResult = new ArrayList<>();
109+
private List<SearchHit> createCombinedResults( TableInJoinRequestBuilder secondTableRequest) {
110+
List<SearchHit> combinedResult = new ArrayList<>();
112111
int resultIds = 0;
113112
int totalLimit = this.requestBuilder.getTotalLimit();
114113
Integer hintLimit = secondTableRequest.getHintLimit();
@@ -146,9 +145,9 @@ private List<InternalSearchHit> createCombinedResults( TableInJoinRequestBuilder
146145

147146
if (searchHitsResult != null && searchHitsResult.getSearchHits().size() > 0) {
148147
searchHitsResult.setMatchedWithOtherTable(true);
149-
List<InternalSearchHit> searchHits = searchHitsResult.getSearchHits();
150-
for (InternalSearchHit matchingHit : searchHits) {
151-
String combinedId = matchingHit.id() + "|" + secondTableHit.getId();
148+
List<SearchHit> searchHits = searchHitsResult.getSearchHits();
149+
for (SearchHit matchingHit : searchHits) {
150+
String combinedId = matchingHit.getId() + "|" + secondTableHit.getId();
152151
//in order to prevent same matching when using OR on hashJoins.
153152
if(this.alreadyMatched.contains(combinedId)){
154153
continue;
@@ -158,15 +157,15 @@ private List<InternalSearchHit> createCombinedResults( TableInJoinRequestBuilder
158157
}
159158

160159
Map<String,Object> copiedSource = new HashMap<String,Object>();
161-
copyMaps(copiedSource,secondTableHit.sourceAsMap());
160+
copyMaps(copiedSource,secondTableHit.getSourceAsMap());
162161
onlyReturnedFields(copiedSource, secondTableRequest.getReturnedFields(),secondTableRequest.getOriginalSelect().isSelectAll());
163162

164163

165164

166-
InternalSearchHit searchHit = new InternalSearchHit(matchingHit.docId(), combinedId, new Text(matchingHit.getType() + "|" + secondTableHit.getType()), matchingHit.getFields());
165+
SearchHit searchHit = new SearchHit(matchingHit.docId(), combinedId, new Text(matchingHit.getType() + "|" + secondTableHit.getType()), matchingHit.getFields());
167166
searchHit.sourceRef(matchingHit.getSourceRef());
168-
searchHit.sourceAsMap().clear();
169-
searchHit.sourceAsMap().putAll(matchingHit.sourceAsMap());
167+
searchHit.getSourceAsMap().clear();
168+
searchHit.getSourceAsMap().putAll(matchingHit.getSourceAsMap());
170169
String t1Alias = requestBuilder.getFirstTable().getAlias();
171170
String t2Alias = requestBuilder.getSecondTable().getAlias();
172171
mergeSourceAndAddAliases(copiedSource, searchHit, t1Alias, t2Alias);
@@ -210,10 +209,10 @@ private void createKeyToResultsAndFillOptimizationStructure(Map<String,Map<Strin
210209
String key = getComparisonKey(t1ToT2FieldsComparison, hit, true, optimizationTermsFilterStructure.get(comparisonID));
211210

212211
//int docid , id
213-
InternalSearchHit searchHit = new InternalSearchHit(resultIds, hit.id(), new Text(hit.getType()), hit.getFields());
212+
SearchHit searchHit = new SearchHit(resultIds, hit.getId(), new Text(hit.getType()), hit.getFields());
214213
searchHit.sourceRef(hit.getSourceRef());
215214

216-
onlyReturnedFields(searchHit.sourceAsMap(), firstTableRequest.getReturnedFields(),firstTableRequest.getOriginalSelect().isSelectAll());
215+
onlyReturnedFields(searchHit.getSourceAsMap(), firstTableRequest.getReturnedFields(),firstTableRequest.getOriginalSelect().isSelectAll());
217216
resultIds++;
218217
this.hashJoinComparisonStructure.insertIntoComparisonHash(comparisonID, key, searchHit);
219218
}
@@ -238,7 +237,7 @@ private List<SearchHit> scrollTillLimit(TableInJoinRequestBuilder tableInJoinReq
238237
updateMetaSearchResults(scrollResp);
239238
List<SearchHit> hitsWithScan = new ArrayList<>();
240239
int curentNumOfResults = 0;
241-
SearchHit[] hits = scrollResp.getHits().hits();
240+
SearchHit[] hits = scrollResp.getHits().getHits();
242241

243242
if (hintLimit == null) hintLimit = MAX_RESULTS_FOR_FIRST_TABLE;
244243

@@ -295,7 +294,7 @@ private void updateRequestWithTermsFilter(Map<String,Map<String, List<Object>>>
295294

296295
private String getComparisonKey(List<Map.Entry<Field, Field>> t1ToT2FieldsComparison, SearchHit hit, boolean firstTable, Map<String, List<Object>> optimizationTermsFilterStructure) {
297296
String key = "";
298-
Map<String, Object> sourceAsMap = hit.sourceAsMap();
297+
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
299298
for (Map.Entry<Field, Field> t1ToT2 : t1ToT2FieldsComparison) {
300299
//todo: change to our function find if key contains '.'
301300
String name;

0 commit comments

Comments
 (0)