Skip to content
This repository was archived by the owner on Aug 20, 2025. It is now read-only.

Commit aa38b0a

Browse files
committed
Upgrade Elastic search t0 5.6.3
1 parent b93f8d4 commit aa38b0a

File tree

12 files changed

+174
-145
lines changed

12 files changed

+174
-145
lines changed

stack/corepersistence/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ limitations under the License.
8282
<commons.io.version>2.4</commons.io.version>
8383
<commons.lang.version>3.1</commons.lang.version>
8484
<datastax.version>2.1.10.3</datastax.version>
85-
<elasticsearch.version>1.7.5</elasticsearch.version>
85+
<elasticsearch.version>5.6.3</elasticsearch.version>
8686
<fasterxml-uuid.version>3.1.3</fasterxml-uuid.version>
8787
<guava.version>18.0</guava.version>
8888
<guice.version>4.0-beta5</guice.version>

stack/corepersistence/queryindex/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@
101101
<type>jar</type>
102102
</dependency>
103103

104+
<dependency>
105+
<groupId>org.elasticsearch.client</groupId>
106+
<artifactId>transport</artifactId>
107+
<version>${elasticsearch.version}</version>
108+
</dependency>
109+
104110

105111
<dependency>
106112
<groupId>org.elasticsearch</groupId>

stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,8 @@
4747
import org.apache.usergrid.persistence.index.utils.IndexValidationUtils;
4848
import org.apache.usergrid.persistence.model.entity.Id;
4949
import org.apache.usergrid.persistence.model.util.UUIDGenerator;
50-
import org.elasticsearch.action.ActionFuture;
51-
import org.elasticsearch.action.ActionListener;
52-
import org.elasticsearch.action.ListenableActionFuture;
53-
import org.elasticsearch.action.ShardOperationFailedException;
50+
import org.elasticsearch.ResourceAlreadyExistsException;
51+
import org.elasticsearch.action.*;
5452
import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
5553
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
5654
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequestBuilder;
@@ -59,22 +57,21 @@
5957
import org.elasticsearch.action.admin.indices.refresh.RefreshResponse;
6058
import org.elasticsearch.action.admin.indices.stats.CommonStats;
6159
import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
62-
import org.elasticsearch.action.deletebyquery.DeleteByQueryResponse;
63-
import org.elasticsearch.action.deletebyquery.IndexDeleteByQueryResponse;
60+
import org.elasticsearch.action.bulk.BulkItemResponse;
6461
import org.elasticsearch.action.search.SearchRequestBuilder;
6562
import org.elasticsearch.action.search.SearchResponse;
6663
import org.elasticsearch.client.AdminClient;
67-
import org.elasticsearch.common.settings.ImmutableSettings;
6864
import org.elasticsearch.common.settings.Settings;
6965
import org.elasticsearch.common.unit.TimeValue;
66+
import org.elasticsearch.index.IndexNotFoundException;
7067
import org.elasticsearch.index.query.*;
7168
import org.elasticsearch.index.query.QueryBuilder;
72-
import org.elasticsearch.indices.IndexAlreadyExistsException;
73-
import org.elasticsearch.indices.IndexMissingException;
69+
import org.elasticsearch.index.reindex.BulkByScrollResponse;
70+
import org.elasticsearch.index.reindex.DeleteByQueryAction;
7471
import org.elasticsearch.search.SearchHit;
7572
import org.elasticsearch.search.SearchHits;
7673
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
77-
import org.elasticsearch.search.aggregations.metrics.sum.SumBuilder;
74+
import org.elasticsearch.search.aggregations.metrics.sum.SumAggregationBuilder;
7875
import org.elasticsearch.search.sort.SortOrder;
7976
import org.slf4j.Logger;
8077
import org.slf4j.LoggerFactory;
@@ -206,13 +203,13 @@ public void addIndex(final String indexName,
206203
//Create index
207204
try {
208205
final AdminClient admin = esProvider.getClient().admin();
209-
Settings settings = ImmutableSettings.settingsBuilder()
206+
Settings settings = Settings.builder()
210207
.put("index.number_of_shards", numberOfShards)
211208
.put("index.number_of_replicas", numberOfReplicas)
212209
//dont' allow unmapped queries, and don't allow dynamic mapping
213210
.put("index.query.parse.allow_unmapped_fields", false)
214211
.put("index.mapper.dynamic", false)
215-
.put("action.write_consistency", writeConsistency)
212+
// .put("action.write_consistency", writeConsistency)
216213
.build();
217214

218215
//Added For Graphite Metrics
@@ -230,7 +227,7 @@ public void addIndex(final String indexName,
230227

231228

232229
logger.info("Created new Index Name [{}] ACK=[{}]", indexName, cir.isAcknowledged());
233-
} catch (IndexAlreadyExistsException e) {
230+
} catch (ResourceAlreadyExistsException e) {
234231
logger.info("Index Name [{}] already exists", indexName);
235232
}
236233
/**
@@ -244,7 +241,7 @@ public void addIndex(final String indexName,
244241

245242
testNewIndex();
246243

247-
} catch (IndexAlreadyExistsException expected) {
244+
} catch (ResourceAlreadyExistsException expected) {
248245
// this is expected to happen if index already exists, it's a no-op and swallow
249246
} catch (IOException e) {
250247
throw new RuntimeException("Unable to initialize index", e);
@@ -452,8 +449,7 @@ public CandidateResults search( final SearchEdge searchEdge, final SearchTypes s
452449
for (SortPredicate sortPredicate : parsedQuery.getSortPredicates() ){
453450
hasGeoSortPredicates = visitor.getGeoSorts().contains(sortPredicate.getPropertyName());
454451
}
455-
456-
452+
457453
final String cacheKey = applicationScope.getApplication().getUuid().toString()+"_"+searchEdge.getEdgeName();
458454
final Object totalEdgeSizeFromCache = sizeCache.getIfPresent(cacheKey);
459455
long totalEdgeSizeInBytes;
@@ -498,6 +494,9 @@ public CandidateResults search( final SearchEdge searchEdge, final SearchTypes s
498494
final Timer.Context timerContext = searchTimer.time();
499495

500496
try {
497+
if (logger.isDebugEnabled()) {
498+
logger.debug("Query to execute = {}", srb.toString());
499+
}
501500

502501
searchResponse = srb.execute().actionGet();
503502
}
@@ -594,21 +593,25 @@ public Observable deleteApplication() {
594593
//Added For Graphite Metrics
595594
return Observable.from( indexes ).flatMap( index -> {
596595

597-
final ListenableActionFuture<DeleteByQueryResponse> response =
598-
esProvider.getClient().prepareDeleteByQuery( alias.getWriteAlias() ).setQuery( tqb ).execute();
596+
ListenableActionFuture<BulkByScrollResponse> response =
597+
DeleteByQueryAction.INSTANCE.newRequestBuilder( esProvider.getClient())
598+
.filter(tqb)
599+
.source(indexes)
600+
.execute();
601+
599602

600-
response.addListener( new ActionListener<DeleteByQueryResponse>() {
603+
response.addListener( new ActionListener<BulkByScrollResponse>() {
601604

602605
@Override
603-
public void onResponse( DeleteByQueryResponse response ) {
606+
public void onResponse( BulkByScrollResponse response ) {
604607
checkDeleteByQueryResponse( tqb, response );
605608
}
606609

607-
608610
@Override
609-
public void onFailure( Throwable e ) {
611+
public void onFailure(Exception e) {
610612
logger.error( "Failed on delete index", e.getMessage() );
611613
}
614+
612615
} );
613616
return Observable.from( response );
614617
} ).doOnError( t -> logger.error( "Failed on delete application", t.getMessage() ) );
@@ -618,17 +621,14 @@ public void onFailure( Throwable e ) {
618621
/**
619622
* Validate the response doesn't contain errors, if it does, fail fast at the first error we encounter
620623
*/
621-
private void checkDeleteByQueryResponse( final QueryBuilder query, final DeleteByQueryResponse response ) {
624+
private void checkDeleteByQueryResponse( final QueryBuilder query, final BulkByScrollResponse response ) {
622625

623-
for ( IndexDeleteByQueryResponse indexDeleteByQueryResponse : response ) {
624-
final ShardOperationFailedException[] failures = indexDeleteByQueryResponse.getFailures();
626+
List<BulkItemResponse.Failure> failures = response.getBulkFailures();
625627

626-
for ( ShardOperationFailedException failedException : failures ) {
627-
logger.error("Unable to delete by query {}. Failed with code {} and reason {} on shard {} in index {}",
628-
query.toString(),
629-
failedException.status().getStatus(), failedException.reason(),
630-
failedException.shardId(), failedException.index() );
631-
}
628+
629+
for ( BulkItemResponse.Failure failure : failures ) {
630+
logger.error("Unable to delete by query {}. Failed with code {} and reason {} in index {}",
631+
query.toString(), failure.getStatus() , failure.getMessage(), failure.getIndex());
632632
}
633633
}
634634

@@ -817,7 +817,7 @@ private long getIndexSize(){
817817
.actionGet();
818818
final CommonStats indexStats = statsResponse.getIndex(indexName).getTotal();
819819
indexSize = indexStats.getStore().getSizeInBytes();
820-
} catch (IndexMissingException e) {
820+
} catch (IndexNotFoundException e) {
821821
// if for some reason the index size does not exist,
822822
// log an error and we can assume size is 0 as it doesn't exist
823823
logger.error("Unable to get size for index {} due to IndexMissingException for app {}",
@@ -836,7 +836,7 @@ public long getTotalEntitySizeInBytes(final SearchEdge edge){
836836

837837
private long getEntitySizeAggregation( final SearchRequestBuilder builder ) {
838838
final String key = "entitySize";
839-
SumBuilder sumBuilder = new SumBuilder(key);
839+
SumAggregationBuilder sumBuilder = new SumAggregationBuilder(key);
840840
sumBuilder.field("entitySize");
841841
builder.addAggregation(sumBuilder);
842842

stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsIndexProducerImpl.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626

2727

2828
import org.apache.usergrid.persistence.index.EntityIndexBatch;
29-
import org.elasticsearch.action.WriteConsistencyLevel;
3029
import org.elasticsearch.action.bulk.BulkItemResponse;
3130
import org.elasticsearch.action.bulk.BulkRequestBuilder;
3231
import org.elasticsearch.action.bulk.BulkResponse;
32+
import org.elasticsearch.action.support.ActiveShardCount;
3333
import org.elasticsearch.client.Client;
3434
import org.elasticsearch.rest.RestStatus;
3535
import org.slf4j.Logger;
@@ -169,9 +169,26 @@ private Observable<IndexOperationMessage> processBatch( final IndexOperationMess
169169
* initialize request
170170
*/
171171
private BulkRequestBuilder initRequest() {
172+
172173
BulkRequestBuilder bulkRequest = client.prepareBulk();
173-
bulkRequest.setConsistencyLevel( WriteConsistencyLevel.fromString( config.getWriteConsistencyLevel() ) );
174-
bulkRequest.setRefresh( config.isForcedRefresh() );
174+
175+
String refreshPolicyConfig = String.valueOf(config.isForcedRefresh());
176+
bulkRequest.setRefreshPolicy(refreshPolicyConfig);
177+
178+
String consistencyLevel = config.getWriteConsistencyLevel();
179+
180+
if ("one".equals(consistencyLevel)) {
181+
bulkRequest.setWaitForActiveShards(1);
182+
}
183+
184+
if ("all".equals(consistencyLevel)) {
185+
bulkRequest.setWaitForActiveShards(ActiveShardCount.ALL);
186+
}
187+
188+
if ("none".equals(consistencyLevel)) {
189+
bulkRequest.setWaitForActiveShards(ActiveShardCount.NONE);
190+
}
191+
175192
return bulkRequest;
176193
}
177194

stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsProvider.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,10 @@
2424

2525
import org.elasticsearch.client.Client;
2626
import org.elasticsearch.client.transport.TransportClient;
27-
import org.elasticsearch.common.settings.ImmutableSettings;
2827
import org.elasticsearch.common.settings.Settings;
2928
import org.elasticsearch.common.transport.InetSocketTransportAddress;
3029
import org.elasticsearch.node.Node;
31-
import org.elasticsearch.node.NodeBuilder;
30+
import org.elasticsearch.transport.client.PreBuiltTransportClient;
3231
import org.slf4j.Logger;
3332
import org.slf4j.LoggerFactory;
3433

@@ -123,7 +122,8 @@ private Client createTransportClient() {
123122
final String clusterName = indexFig.getClusterName();
124123
final int port = indexFig.getPort();
125124

126-
ImmutableSettings.Builder settings = ImmutableSettings.settingsBuilder().put( "cluster.name", clusterName )
125+
Settings.Builder settings = Settings.builder()
126+
.put( "cluster.name", clusterName )
127127
.put( "client.transport.sniff", true );
128128

129129
String nodeName = indexFig.getNodeName();
@@ -142,11 +142,15 @@ private Client createTransportClient() {
142142
settings.put( "node.name", nodeName );
143143

144144

145-
TransportClient transportClient = new TransportClient( settings.build() );
145+
TransportClient transportClient = new PreBuiltTransportClient(settings.build());
146146

147147
// we will connect to ES on all configured hosts
148148
for ( String host : indexFig.getHosts().split( "," ) ) {
149-
transportClient.addTransportAddress( new InetSocketTransportAddress( host, port ) );
149+
try {
150+
transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));
151+
} catch (UnknownHostException uhe) {
152+
logger.error( "Couldn't resolve hostname {} to use as ES node ", host );
153+
}
150154
}
151155

152156
return transportClient;
@@ -181,7 +185,7 @@ public Client createNodeClient() {
181185
final String hostString = hosts.toString();
182186

183187

184-
Settings settings = ImmutableSettings.settingsBuilder()
188+
Settings settings = Settings.builder()
185189

186190
.put( "cluster.name", clusterName )
187191

@@ -200,7 +204,7 @@ public Client createNodeClient() {
200204
logger.trace("Creating ElasticSearch client with settings: {}", settings.getAsMap());
201205
}
202206

203-
Node node = NodeBuilder.nodeBuilder().settings( settings ).client( true ).data( false ).node();
207+
Node node = new Node( settings );
204208

205209
return node.client();
206210
}

0 commit comments

Comments
 (0)