private void log(ElasticsearchRequest request, long start, ElasticsearchResponse response) { long executionTimeNs = System.nanoTime() - start; long executionTimeMs = TimeUnit.NANOSECONDS.toMillis( executionTimeNs ); if ( requestLog.isTraceEnabled() ) { JsonLogHelper logHelper = gsonProvider.getLogHelper(); requestLog.executedRequest( request.getMethod(), request.getPath(), request.getParameters(), executionTimeMs, response.getStatusCode(), response.getStatusMessage(), logHelper.toString( request.getBodyParts() ), logHelper.toString( response.getBody() ) ); } else { requestLog.executedRequest( request.getMethod(), request.getPath(), request.getParameters(), executionTimeMs, response.getStatusCode(), response.getStatusMessage() ); } }
@Override protected ElasticsearchRequest buildRequest() { ElasticsearchRequest.Builder builder = ElasticsearchRequest.delete() .pathComponent( indexName ); return builder.build(); }
@Override protected ElasticsearchRequest buildRequest() { ElasticsearchRequest.Builder builder = ElasticsearchRequest.post(); if ( !indexNames.isEmpty() ) { builder.multiValuedPathComponent( indexNames ); } builder.pathComponent( Paths._REFRESH ); return builder.build(); }
private static String formatRequest(ElasticsearchRequest request) { //Wild guess for some tuning. The only certainty is that the default (16) is too small. StringBuilder sb = new StringBuilder( 180 ); sb.append( request.getMethod() ) .append( " " ) .append( request.getPath() ) .append( " with parameters " ) .append( request.getParameters() ); return sb.toString(); }
@Override protected CompletableFuture<?> beforeExecute(ElasticsearchWorkExecutionContext executionContext, ElasticsearchRequest request) { QUERY_LOG.executingElasticsearchQuery( request.getPath(), request.getParameters(), executionContext.getGsonProvider().getLogHelper().toString( request.getBodyParts() ) ); return super.beforeExecute( executionContext, request ); }
@Test @TestForIssue( jiraKey = "HSEARCH-2883" ) public void multiPathRequest() { final ElasticsearchRequest request = ElasticsearchRequest.delete() .pathComponent( Paths._BULK ) .pathComponent( Paths._SEARCH ) .build(); assertEquals( "DELETE", request.getMethod() ); assertEquals( 0, request.getParameters().size() ); //See also HSEARCH-2883: it is important to check that we don't add an additional '/' at the end of the generated path. assertEquals( "/" + Paths._BULK.original + "/" + Paths._SEARCH.original, request.getPath() ); }
public ElasticsearchResponse generateResponse(ElasticsearchRequest request) { String method = request.getMethod(); String path = request.getPath(); if ( "GET".equals( method ) && ( StringHelper.isEmpty( path ) || "/".equals( path ) ) ) { return getResponse; } else if ( "POST".equals( method ) && path.endsWith( "/_bulk" ) ) { JsonBuilder.Array builder = JsonBuilder.array(); // In our case we only bulk requests without a body int itemCount = request.getBodyParts().size(); for ( int i = 0 ; i < itemCount ; ++i ) { builder.add( JsonBuilder.object() .add( "foo", JsonBuilder.object() .addProperty( "status", 200 ) ) ); } JsonObject responseJson = JsonBuilder.object() .add( "items", builder ) .build(); return new ElasticsearchResponse( 200, "OK", responseJson ); } else { return okResponse; } }
@Test public void multiValuedPathRequest() { List<URLEncodedString> typeNames = new ArrayList<>( 2 ); typeNames.add( URLEncodedString.fromString( "hello" ) ); typeNames.add( URLEncodedString.fromString( "world" ) ); final ElasticsearchRequest request = ElasticsearchRequest.post() .pathComponent( Paths._SEARCH ) .multiValuedPathComponent( typeNames ) .pathComponent( URLEncodedString.fromString( "nice day" ) ) .build(); assertEquals( "/_search/hello,world/nice+day", request.getPath() ); }
@Override protected ElasticsearchRequest buildRequest() { ElasticsearchRequest.Builder builder = ElasticsearchRequest.get() .pathComponent( indexName ) .pathComponent( Paths._SETTINGS ); return builder.build(); }
@Override protected ElasticsearchRequest buildRequest() { ElasticsearchRequest.Builder builder = ElasticsearchRequest.put() .pathComponent( indexName ); if ( payload != null ) { builder.body( payload ); } return builder.build(); }
public static HttpEntity toEntity(Gson gson, ElasticsearchRequest request) { final List<JsonObject> bodyParts = request.getBodyParts(); if ( bodyParts.isEmpty() ) { return null; } return new GsonHttpEntity( gson, bodyParts ); }
@Override public String toString() { return new StringBuilder() .append( getClass().getSimpleName() ) .append( "[" ) .append( "path = " ).append( request.getPath() ) .append( ", dirtiedIndexName = " ).append( dirtiedIndexName ) .append( "]" ) .toString(); }
private void putNonDynamicSettings(URLEncodedString indexName, JsonObject settingsJsonObject) { performRequest( ElasticsearchRequest.post() .pathComponent( indexName ) .pathComponent( Paths._CLOSE ) .build() ); performRequest( ElasticsearchRequest.put() .pathComponent( indexName ).pathComponent( Paths._SETTINGS ) .body( settingsJsonObject ) .build() ); performRequest( ElasticsearchRequest.post() .pathComponent( indexName ) .pathComponent( Paths._OPEN ) .build() ); }
@Override protected ElasticsearchRequest buildRequest() { ElasticsearchRequest.Builder builder = ElasticsearchRequest.head() .pathComponent( indexName ); return builder.build(); }
private static String formatRequest(ElasticsearchRequest request) { //Wild guess for some tuning. The only certainty is that the default (16) is too small. StringBuilder sb = new StringBuilder( 180 ); sb.append( request.getMethod() ) .append( " " ) .append( request.getPath() ) .append( " with parameters " ) .append( request.getParameters() ); return sb.toString(); }
@Override protected CompletableFuture<?> beforeExecute(ElasticsearchWorkExecutionContext executionContext, ElasticsearchRequest request) { QUERY_LOG.executingElasticsearchQuery( request.getPath(), request.getParameters(), executionContext.getGsonProvider().getLogHelper().toString( request.getBodyParts() ) ); return super.beforeExecute( executionContext, request ); }
@Override protected ElasticsearchRequest buildRequest() { ElasticsearchRequest.Builder builder = ElasticsearchRequest.get() .pathComponent( indexName ) .pathComponent( Paths._MAPPING ); return builder.build(); }
@Override protected ElasticsearchRequest buildRequest() { ElasticsearchRequest.Builder builder = ElasticsearchRequest.put() .pathComponent( indexName ); if ( payload != null ) { builder.body( payload ); } return builder.build(); }
@Override public JsonObject getBulkableActionBody() { List<JsonObject> bodyParts = request.getBodyParts(); if ( !bodyParts.isEmpty() ) { if ( bodyParts.size() > 1 ) { throw new AssertionFailure( "Found a bulkable action with multiple body parts: " + bodyParts ); } return bodyParts.get( 0 ); } else { return null; } }