2017-07-18 4 views
0

Ich benutze Elasticsearch Version 1.7.5. Bevor ich auf Version 2.x (oder sogar 5.x) upgraden kann, muss ich fünf große Indizes neu indizieren, damit sie den 2.x-Standards entsprechen.Elasticsearch - Was ist der beste Weg, um meine Daten neu zu indizieren, ohne Logstash oder die Scroll-API zu verwenden?

Leider kann Logstash (und die Scroll-API) meine Daten wegen this problem nicht neu indizieren.


Meine Frage:

  • Was ist der beste Weg, um meine Daten indizieren, ohne Logstash oder den Scroll-api zu verwenden?
    • Wenn möglich, würde ich lieber Nest verwenden.
+0

zu überprüfen, diese Antwort könnte helfen: https://stackoverflow.com/questions/34921637/how-to-copy- ein-index-dokumente-zu-anderen-index-in-elasticsearch/34922623 # 34922623 – Val

+0

@Val: Danke. Leider verwenden alle diese Lösungen die Scroll-API. –

+0

Würde [dieses Dokument] (https://www.elastic.co/guide/en/elasticsearch/reference/5.x/reindex-upgrade.html) helfen? – Adonis

Antwort

1

Wenn Sie Elasticsearch Targeting sind 5.0+, können Sie die reindex API verwenden, um Daten von einem entfernten Elasticsearch Cluster indizieren (die 1.7.5-Cluster) in Elasticsearch 5.0+.

NEST 5.x macht die reindex API als ReindexOnServer() Methode

client.ReindexOnServer(r => r 
    .Source(s => s 
     .Remote(sr => sr 
      // URI to 1.7.5 cluster 
      .Host(new Uri("http://localhost:9201")) 
     ) 
     .Index("entries") 
    ) 
    .Destination(d => d 
     .Index("entries") 
    ) 
    .WaitForCompletion(true) 
); 

WaitForCompletion bestimmt, ob der Ruf nach indizieren beenden warten soll. Wenn dies falsch ist, kann die Task Eigenschaft auf der Antwort verwendet werden, um den Status der Operation mit dem tasks API

Verwandte Themen