2016-04-08 11 views
0

Elasticsearch hat ihre neue Reindex API in Elasticsearch 2.3.0 veröffentlicht, nutzt die aktuelle Version von NEST (2.1.1) diese API noch? Falls nicht, ist dies geplant? Ich bin mir bewusst, dass die aktuelle Version eine Reindex-Methode hat, aber es zwingt Sie, den neuen Index zu erstellen. Für meinen Anwendungsfall existiert der Index bereits.Nest - Reindexing

Alle Rückmeldungen/Einblicke werden grandios geschätzt. Thnx!

Antwort

1

Diese Art von Frage wird am besten auf den github issues for NEST gefragt, da die Committer für das Projekt werden :) auf beste Antwort der Lage seine

A commit went in on 6 April to map the new Reindex API in Elasticsearch 2.3.0, zusammen mit anderen Funktionen wie die Task Management API und Update By Query. Dies machte seinen Weg in NEST 2.3.0

NEST 2.x bereits einen Helfer enthält für Reindizierung zu tun, die Scan/Scroll unter die Decke verwendet und gibt ein IObservable<IReindexResponse<T>>, die verwendet werden können Fortschritte

public class Document {} 

var observable = client.Reindex<Document>("from-index", "to-index", r => r 
    // settings to use when creating to-index 
    .CreateIndex(c => c 
     .Settings(s => s 
      .NumberOfShards(5) 
      .NumberOfReplicas(2) 
     ) 
    ) 
    // query to optionally limit documents re-indexed from from-index to to-index 
    .Query(q => q.MatchAll()) 
    // the number of documents to reindex in each request. 
    // NOTE: The number of documents in each request will actually be 
    //  NUMBER * NUMBER OF SHARDS IN from-index 
    // since reindex uses scan/scroll 
    .Size(100) 
); 

var observer = new ReindexObserver<Document>(
    onNext: reindexResponse => 
    { 
     // do something with notification. Maybe log total progress 
    }, 
    onError: exception => 
    { 
     throw exception; 
    } 
    completed:() => 
    { 
     // Maybe log completion, refresh the index, etc.. 
    } 
); 

observable.Subscribe(observer); 

Werfen Sie einen Blick zu beobachten an der ReIndex API tests für einige Ideen.

Die neue Reindex-API wird im Client als client.ReIndexOnServer() bezeichnet, um sie von der vorhandenen beobachtbaren Implementierung zu unterscheiden.