2016-04-11 19 views
5

Da quando ho aggiornato il mio client Nest a 2.2.1 non riesco a visualizzare la query che sto inviando al mio client di ricerca elastica (ora versione 2.3.0). Ho usato per usare questa linea:serializza la query dalla ricerca elastica del client Nest 2.3

string searchJson = Encoding.UTF8.GetString(client.Serializer.Serialize(myQueryHere)); 

Ma questo metodo restituisce ora vuoto al posto del JSON ha usato. ConnectionStatus inoltre non esiste quindi non riesco più a vedere il json che sto inviando, qualcuno sa di un modo? CallDetails.RequestBodyInBytes è disponibile ma restituisce null.

risposta

5

Take a look at the documentation for NEST 2.x on Connecting. CallDetails.RequestBodyInBytes sarà null se non si imposta .DisableDirectStreaming() su ConnectionSettings che viene passato al costruttore di ElasticClient

var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); 
var settings = new ConnectionSettings(connectionPool) 
    .DisableDirectStreaming(); 

var client = new ElasticClient(settings); 

ora una copia della richiesta e di risposta byte saranno esposti sui CallDetails risposta

var response = client.Search<Document>(); 

var requestJson = Encoding.UTF8.GetString(response.CallDetails.RequestBodyInBytes); 
var responseJson = Encoding.UTF8.GetString(response.CallDetails.ResponseBodyInBytes); 

Whilst developing it may be useful to log out all requests and responses.

+0

Eccellente, grazie mille. (Ho provato a upvote ma ho bisogno di un punteggio di 15) – zappa

+0

Nessun problema. Sentitevi liberi di votare e accettare la risposta :) –

+0

Sfortunatamente questo si basa sulla mia chiamata al metodo di ricerca per vedere cosa c'è nella mia richiesta, nella mia query originale ho potuto vedere quello che stavo PER INVIARE senza effettivamente inviarlo, c'è un modo di fare questo? – zappa

0

metodo Serialize ora richiede torrente, su cui scriverà di query JSON prime - funziona correttamente per nido 5.3.0:

 var stream = new System.IO.MemoryStream(); 
     nestClient.Serializer.Serialize(query, stream); 
     var jsonQuery = System.Text.Encoding.UTF8.GetString(stream.ToArray()); 
Problemi correlati