<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Kofi Bartlett - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Kofi Bartlett - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/de/search-labs/author/kofi-bartlett</link>
    </image>
    <link>https://www.elastic.co/de/search-labs/author/kofi-bartlett</link>
    <atom:link href="https://www.elastic.co/de/search-labs/rss/author/kofi-bartlett.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[de]]></language>
    <lastBuildDate>Sun, 20 Sep 2026 14:51:46 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Anzeigen von Feldern in einem Elasticsearch-Index]]></title>
    <description><![CDATA[Untersuchung von Techniken zur Darstellung von Feldern in einem Elasticsearch-Index.
]]></description>
    <content:encoded><![CDATA[<p>In diesem Artikel werden wir erläutern, wie Felder in einem Elasticsearch-Index angezeigt werden. Dies kann hilfreich sein, um die Struktur Ihrer Daten zu verstehen, bestimmte Felder zu identifizieren und Probleme zu beheben. Wir werden folgende Themen behandeln:</p><ol><li><p><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#1.-using-the--mapping-api-to-retrieve-field-information">Verwendung der </a><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#1.-using-the--mapping-api-to-retrieve-field-information"><code>_mapping</code></a><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#1.-using-the--mapping-api-to-retrieve-field-information"> API zum Abrufen von Feldinformationen</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#2.-using-the--search-api-to-display-field-values">Verwendung der </a><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#2.-using-the--search-api-to-display-field-values"><code>_search</code></a><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#2.-using-the--search-api-to-display-field-values"> API zum Anzeigen von Feldwerten</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#3.-filtering-fields-using-the-fields-parameter">Filtern von Feldern mithilfe des </a><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#3.-filtering-fields-using-the-fields-parameter"> Parameters</a><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#3.-filtering-fields-using-the-fields-parameter"><code>fields</code></a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index#4.-displaying-nested-fields">Verschachtelte Felder anzeigen</a></p></li></ol><h2>1. Verwendung der _mapping-API zum Abrufen von Feldinformationen</h2><p>Die <code>_mapping</code> API ermöglicht es Ihnen, die Mapping-Definition für einen oder mehrere <a href="https://opster.com/guides/elasticsearch/glossary/elasticsearch-index/">Indizes</a> abzurufen. Dies umfasst Informationen über die Felder, ihre Datentypen und weitere Eigenschaften. Um die Zuordnung für einen bestimmten Index abzurufen, verwenden Sie die folgende Anfrage:</p>GET /&lt;index_name&gt;/_mapping<p>Wenn Sie beispielsweise einen Index mit dem Namen <code>my_index</code> haben, können Sie dessen Zuordnung mit der folgenden Anfrage abrufen:</p>GET /my_index/_mapping<p>Die Antwort enthält die Mapping-Definition für den Index, die Informationen über die Felder und deren Eigenschaften enthält.</p><p>Es ist auch möglich, die Zuordnung eines bestimmten Feldes abzurufen. Dies kann nützlich sein, wenn Ihre Kartierung recht umfangreich ist und Sie sich nur auf ein bestimmtes Feld konzentrieren möchten. Um die Zuordnung eines bestimmten Feldes abzurufen, verwenden Sie die folgende Anfrage:</p>GET /my_index/_mapping/field/my_field<p>Sie können die Zuordnungen mehrerer Felder auch abrufen, indem Sie deren Namen durch Kommas trennen, wie in der folgenden Anfrage:</p>GET /my_index/_mapping/field/my_field_1,my_field_2,my_field_3<h2>2. Verwenden der _search-API zum Anzeigen von Feldwerten</h2><p>Um die Werte von Feldern in einem Elasticsearch-Index anzuzeigen, können Sie die <code>_search</code> API verwenden. Standardmäßig gibt die <code>_search</code> API das Feld <code>_source</code> zurück, welches das ursprüngliche JSON-Dokument enthält, das indiziert wurde. Um nur bestimmte Felder anzuzeigen, können Sie den Parameter <code>_source</code> in der Suchanfrage verwenden.</p><p>Hier ist ein Beispiel für eine Suchanfrage, die die Werte der Felder <code>title</code> und <code>author</code> für Dokumente im Index <code>my_index</code> zurückgibt:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["title", "author"]
}<p>In diesem Beispiel gibt der Parameter <code>_source</code> die zurückzugebenden Felder an.</p><h2>3. Filtern von Feldern mithilfe des Parameters „fields“</h2><p>Sie können auch den Parameter <code>fields</code> verwenden, um die in der Suchantwort zurückgegebenen Felder zu filtern. Dies kann nützlich sein, wenn Sie nur bestimmte Felder benötigen und die Größe der Antwort reduzieren möchten. Der Parameter <code>fields</code> akzeptiert ein Array von Feldnamen oder Platzhaltermustern.</p><p>Um beispielsweise nur die Felder <code>title</code> und <code>author</code> für Dokumente im Index <code>my_index</code> zurückzugeben, können Sie die folgende Suchanfrage verwenden:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "fields": ["title", "author"],
  "_source": false
}<p>Beachten Sie, dass der Parameter <code>_source</code> auf false gesetzt ist, um das Quelldokument nicht zurückzugeben.</p><p>Um alle Felder mit dem Datentyp <code>text</code> zurückzugeben, können Sie ein Wildcard-Muster wie dieses verwenden:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "fields": ["*.text"],
  "_source": false
}<h2>4. Anzeigen verschachtelter Felder</h2><p>Wenn Ihr Index verschachtelte Felder enthält, können Sie die Punktnotation verwenden, um den Pfad des verschachtelten Feldes im Parameter <code>fields</code> anzugeben. Wenn Sie beispielsweise ein verschachteltes Feld mit dem Namen <code>address.city</code> haben, können Sie es wie folgt in die Suchergebnisseinlösung einbinden:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "fields": ["title", "author", "address.city"],
  "_source": false
}<p>In diesem Beispiel enthält die Suchergebnisseinsendung die Werte der Felder <code>title</code>, <code>author</code> und <code>address.city</code> .</p><h2>Fazit</h2><p>Zusammenfassend lässt sich sagen, dass die Anzeige von Feldern in einem Elasticsearch-Index durch die Verwendung der <code>_mapping</code> -API zum Abrufen von Feldinformationen und der <code>_search</code> -API zum Anzeigen von Feldwerten erreicht werden kann. Sie können die in der Suchantwort zurückgegebenen Felder entweder mit den Parametern <code>_source</code> oder <code>fields</code> filtern und verschachtelte Felder mit der Punktnotation anzeigen. Mithilfe dieser Techniken können Sie die Struktur Ihrer Daten verstehen, bestimmte Felder identifizieren und Probleme beheben.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/displaying-fields-in-an-elasticsearch-index</guid>
    <category><![CDATA[Index-Daten]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt3a1fcc771a2504e5/6a17f817abe0f23038dfebca/fa386d7bbaeab6855e62897ace8d7dca91a060b4-720x420.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 26 May 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Wie man den Speicherplatz und die Nutzung von Elasticsearch optimiert]]></title>
    <description><![CDATA[Lernen Sie, wie Sie Fälle vermeiden und behandeln können, in denen die Elasticsearch-Festplatte zu voll ist (Überauslastung) und in denen die Festplattenkapazität nicht ausgelastet ist, um die Clusterkosten zu optimieren.]]></description>
    <content:encoded><![CDATA[<p>Die Verwaltung von Datenträgern ist in jeder Datenbank wichtig, und Elasticsearch bildet da keine Ausnahme. Wenn nicht genügend Speicherplatz zur Verfügung steht, stellt Elasticsearch die Zuweisung von Shards an den Knoten ein. Dies wird Sie letztendlich daran hindern, Daten in den Cluster zu schreiben, wodurch das Risiko eines Datenverlusts in Ihrer Anwendung entsteht. Wenn Sie hingegen zu viel Speicherplatz haben, bezahlen Sie für mehr Ressourcen, als Sie benötigen.</p><h2>Hintergrundinformationen zu Wasserzeichen</h2><p>In Ihrem Elasticsearch-Cluster gibt es verschiedene „Wasserzeichen“-Schwellenwerte, die Ihnen helfen, den verfügbaren Speicherplatz zu überwachen. Wenn der Speicherplatz auf einem Knoten fast aufgebraucht ist, wird als erstes der Schwellenwert „niedriger Speicherplatz“ überschritten. Der zweite Schwellenwert wird dann der „hohe Festplatten-Wasserzeichen-Schwellenwert“ sein. Schließlich wird das Stadium der „Scheibenflutung“ erreicht. Sobald dieser Schwellenwert überschritten ist, blockiert der Cluster das Schreiben in ALLE Indizes, die einen Shard (primär oder Replikat) auf dem Knoten haben, der den Schwellenwert überschritten hat. Lesevorgänge (Suchanfragen) bleiben weiterhin möglich.</p><h2>Wie man Fälle von zu voller Festplatte (Überauslastung) verhindert und damit umgeht</h2><p>Es gibt verschiedene Methoden, um mit Fällen umzugehen, in denen Ihre Elasticsearch-Festplatte zu voll ist:</p><ol><li><p><strong>Alte Daten</strong> <strong>löschen</strong> : Daten sollten in der Regel nicht unbegrenzt aufbewahrt werden. Eine Möglichkeit, einer zu vollen Festplatte vorzubeugen und das Problem zu lösen, besteht darin, sicherzustellen, dass Daten, sobald sie ein bestimmtes Alter erreichen, zuverlässig archiviert und gelöscht werden. Eine Möglichkeit hierfür ist die Verwendung <a href="https://www.elastic.co/docs/manage-data/lifecycle/index-lifecycle-management">von ILM</a>.</p></li><li><p><strong>Speicherkapazität hinzufügen:</strong> Wenn Sie die Daten nicht löschen können, sollten Sie möglicherweise weitere Datenknoten hinzufügen oder die Festplattengrößen erhöhen, um alle Daten zu erhalten, ohne die Leistung negativ zu beeinflussen. Wenn Sie die Speicherkapazität des Clusters erhöhen müssen, sollten Sie überlegen, ob Sie nur die Speicherkapazität allein oder auch RAM- und CPU-Ressourcen im entsprechenden Verhältnis hinzufügen müssen (siehe Abschnitt zum <a href="https://www.elastic.co/search-labs/blog/optimize-elasticsearch-disk-space-and-usage#the-relationship-between-disk-size,-ram-and-cpu">Verhältnis von Festplattengröße, RAM und CPU</a> weiter unten).</p></li></ol><h2>So fügen Sie Ihrem Elasticsearch-Cluster Speicherkapazität hinzu</h2><ol><li><p><strong>Erhöhen Sie die Anzahl der Datenknoten: </strong>Denken Sie daran, dass die neuen Knoten die gleiche Größe wie die vorhandenen Knoten und die gleiche Elasticsearch-Version haben sollten.</p></li><li><p><strong>Vergrößerung der vorhandenen Knoten: </strong>In Cloud-basierten Umgebungen ist es in der Regel einfach, die Festplattengröße und den Arbeitsspeicher/die CPU auf vorhandenen Knoten zu erhöhen.</p></li><li><p><strong>Erhöhen Sie nur die Festplattengröße: </strong>In Cloud-basierten Umgebungen ist es oft relativ einfach, die Festplattengröße zu erhöhen.</p></li><li><p><a href="https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore"><strong>Schnappschuss</strong></a><a href="https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore"> </a><a href="https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore"><strong>Und</strong></a><a href="https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore"> </a><a href="https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore"><strong>Wiederherstellung</strong></a><strong>:</strong> Wenn Sie es zulassen, dass alte Daten auf Anfrage in einem automatisierten Prozess aus Backups wiederhergestellt werden, können Sie alte Indizes als Snapshots speichern, diese löschen und die Daten auf Anfrage temporär aus den Snapshots wiederherstellen. </p></li><li><p><strong>Reduzierung der Replikate pro Shard:</strong> Eine weitere Möglichkeit zur Datenreduzierung besteht darin, die Anzahl der Replikate jedes Shards zu verringern. Für eine hohe Verfügbarkeit ist es wünschenswert, pro Shard eine Replik zu haben. Wenn die Daten jedoch älter werden, kann man unter Umständen auch ohne Replikate arbeiten. Das funktioniert in der Regel, wenn die Daten persistent sind oder Sie über eine Datensicherung verfügen, die Sie bei Bedarf wiederherstellen können.</p></li><li><p><strong>Benachrichtigungen erstellen:</strong> Um zu verhindern, dass die Festplatte in Zukunft voll wird und um proaktiv handeln zu können, sollten Sie Benachrichtigungen auf Basis der Festplattennutzung erstellen, die Sie benachrichtigen, wenn die Festplatte sich zu füllen beginnt. </p></li></ol><h2>Wie man Fälle von unzureichender Festplattenauslastung verhindert und behandelt</h2><p>Wenn Ihre Festplattenkapazität nicht voll ausgelastet ist, gibt es verschiedene Möglichkeiten, das Speichervolumen in Ihrem Cluster zu reduzieren.</p><h3>Wie man das Speichervolumen eines Elasticsearch-Clusters reduziert</h3><p>Es gibt verschiedene Methoden, um das Speichervolumen eines Clusters zu reduzieren.</p><p><strong>1. Die Anzahl der Datenknoten reduzieren</strong></p><p>Wenn Sie den Datenspeicherbedarf reduzieren und gleichzeitig RAM- und CPU-Ressourcen im gleichen Verhältnis einsparen möchten, dann ist dies die einfachste Strategie. Die Stilllegung nicht benötigter Knotenpunkte dürfte die größten Kosteneinsparungen ermöglichen.</p><p>Vor der Außerbetriebnahme des Knotens sollten Sie Folgendes beachten:</p><ul><li><p>Stellen Sie sicher, dass der außer Betrieb zu nehmende Knoten nicht als MASTER-Knoten benötigt wird. Sie sollten immer mindestens drei Knoten mit der MASTER-Knotenrolle haben.</p></li><li><p>Die Datenfragmente müssen von dem außer Betrieb zu nehmenden Knoten migriert werden.</p></li></ul><p><strong>2. Ersetzen Sie die vorhandenen Knoten durch kleinere Knoten.</strong></p><p>Wenn Sie die Anzahl der Knoten nicht weiter reduzieren können (normalerweise wären 3 die Mindestkonfiguration), dann sollten Sie die vorhandenen Knoten verkleinern. Denken Sie daran, dass es ratsam ist, sicherzustellen, dass alle Datenknoten über den gleichen Arbeitsspeicher und die gleiche Festplattengröße verfügen, da der Shard-Ausgleich auf der Grundlage der Anzahl der Shards pro Knoten erfolgt.</p><p>Der Ablauf wäre wie folgt:</p><ul><li><p>Fügen Sie dem Cluster neue, kleinere Knoten hinzu.</p></li><li><p>Die Shards von den außer Betrieb zu nehmenden Knoten migrieren</p></li><li><p>Schalten Sie die alten Knoten ab.</p></li></ul><p><strong>3. Verringern Sie die Festplattengröße auf den Knoten.</strong></p><p>Wenn Sie NUR die Festplattengröße auf den Knoten reduzieren möchten, ohne den gesamten RAM oder die CPU des Clusters zu verändern, dann können Sie die Festplattengröße für jeden Knoten reduzieren. Die Reduzierung der Festplattengröße auf einem Elasticsearch-Knoten ist kein trivialer Prozess.</p><p>Am einfachsten ginge das in der Regel so:</p><ul><li><p>Shards vom Knoten migrieren</p></li><li><p>Stoppe den Knoten</p></li><li><p>Hängen Sie ein neues Datenvolume mit geeigneter Größe an den Knoten an.</p></li><li><p>Kopieren Sie alle Daten vom alten Datenträger auf den neuen Datenträger.</p></li><li><p>Altes Volume A abtrennen</p></li><li><p>Startknoten und Shards zurück zum Knoten migrieren</p></li></ul><p>Dies setzt voraus, dass auf den anderen Knoten ausreichend Kapazität vorhanden ist, um die zusätzlichen Shards des Knotens während dieses Prozesses vorübergehend zu speichern. In vielen Fällen können die Kosten für die Verwaltung dieses Prozesses die potenziellen Einsparungen bei der Festplattennutzung übersteigen. Aus diesem Grund ist es unter Umständen einfacher, den Knoten komplett durch einen neuen Knoten mit der gewünschten Festplattengröße zu ersetzen (siehe oben „Ersetzen vorhandener Knoten durch kleinere Knoten“).</p><p>Wenn man für unnötige Ressourcen bezahlt, können die Kosten offensichtlich durch eine Optimierung der Ressourcennutzung reduziert werden.</p><h2>Das Verhältnis zwischen Festplattengröße, RAM und CPU</h2><p>Das ideale Verhältnis von Festplattenkapazität zu Arbeitsspeicher in Ihrem Cluster hängt von Ihrem jeweiligen Anwendungsfall ab. Aus diesem Grund sollten Sie bei der Überlegung von Änderungen Ihrer Speicherkapazität auch berücksichtigen, ob Ihre aktuellen Verhältnisse von Festplatte, Arbeitsspeicher und CPU angemessen ausbalanciert sind und ob Sie infolgedessen auch Arbeitsspeicher und CPU im gleichen Verhältnis hinzufügen oder reduzieren müssen.</p><p>Der Bedarf an RAM und CPU hängt vom Umfang der <a href="https://opster.com/guides/elasticsearch/glossary/elasticsearch-indexing/">Indizierungsaktivität</a> , der Anzahl und Art der Abfragen sowie der Menge der zu durchsuchenden und zu aggregierenden Daten ab. Dies steht oft im Verhältnis zur Menge der auf dem Cluster gespeicherten Daten und sollte daher auch mit der Festplattengröße in Zusammenhang stehen.</p><p>Das Verhältnis zwischen Festplattenkapazität und Arbeitsspeicher kann je nach Anwendungsfall variieren. Hier einige Beispiele:</p><p></p><p>Indexaktivität</p><p>Aufbewahrung</p><p>Suchaktivität</p><p>Festplattenkapazität</p><p>RAM</p><p>Unternehmenssuch-App</p><p>Mäßige Holzaufnahme</p><p>Lang</p><p>Licht</p><p>2 TB</p><p>32 GB</p><p>App-Überwachung</p><p>Intensive Holzverarbeitung</p><p>Kurz</p><p>Licht</p><p>1 TB</p><p>32 GB</p><p>E-Commerce</p><p>Light-Datenindexierung</p><p>Unbestimmt</p><p>Schwer</p><p>500 GB</p><p>32 GB</p><p><em>Denken Sie daran, dass Änderungen an der Konfiguration von Node-Maschinen mit Vorsicht vorgenommen werden müssen, da dies zu Ausfallzeiten der Nodes führen kann und Sie sicherstellen müssen, dass Shards nicht auf Ihre anderen, bereits überlasteten Nodes migriert werden.</em></p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/optimize-elasticsearch-disk-space-and-usage</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/optimize-elasticsearch-disk-space-and-usage</guid>
    <category><![CDATA[Grundlagen]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <pubDate>Fri, 16 May 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Wie konfiguriert man die Anzahl der Replikate in einem Elasticsearch-Index?]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie die number_of_replicas in einem Elasticsearch-Index konfigurieren, um die Suchleistung zu verbessern und eine Widerstandsfähigkeit gegen Node-Ausfälle zu gewährleisten. 
]]></description>
    <content:encoded><![CDATA[<p>Elasticsearch ist als verteiltes System konzipiert, das große Datenmengen verarbeiten und eine hohe Verfügbarkeit gewährleisten kann. Eine der wichtigsten Funktionen, die dies ermöglichen, ist das Konzept der Indexreplikation, das durch die Einstellung <code>number_of_replicas</code> gesteuert wird. Dieser Artikel befasst sich detailliert mit dieser Einstellung, ihren Auswirkungen und wie man sie richtig konfiguriert.</p><h2>Die Rolle von Replikaten in Elasticsearch</h2><p>In Elasticsearch ist ein Index eine Sammlung von Dokumenten, die auf mehrere primäre Shards verteilt sind. Jeder primäre Shard ist ein in sich geschlossener Apache Lucene-Index, und die Dokumente innerhalb eines Index werden auf alle primären Shards verteilt. Um eine hohe Verfügbarkeit und Datenredundanz zu gewährleisten, ermöglicht Elasticsearch, dass jeder Shard eine oder mehrere Kopien, sogenannte Replikate, besitzt.

Die Einstellung <code>number_of_replicas</code> steuert die Anzahl der Replikat-Shards (Kopien), die Elasticsearch für jeden primären Shard in einem Index erstellt. Standardmäßig erstellt Elasticsearch für jeden primären Shard eine Replik, dies kann jedoch je nach den Anforderungen Ihres Systems geändert werden.</p><h2>Konfigurieren der Anzahl der Replikate</h2><p>Die Einstellung <code>number_of_replicas</code> kann bei der Indexerstellung konfiguriert oder später aktualisiert werden. So können Sie dies bei der Indexerstellung festlegen:</p>PUT /my_index
{
  "settings": {
    "number_of_replicas": 2
  }
}<p>In diesem Beispiel erstellt Elasticsearch zwei Replikate für jeden primären Shard im Index <code>my_index</code> .</p><p>Um die <code>number_of_replicas</code> -Einstellung für einen bestehenden Index zu aktualisieren, können Sie die <code>_settings</code> -API verwenden:</p>PUT /my_index/_settings
{
  "number_of_replicas": 3
}<p>Dieser Befehl aktualisiert den Index <code>my_index</code> , sodass für jeden primären Shard drei Replikate vorhanden sind.</p><h2>Auswirkungen der Einstellung number_of_replicas</h2><p>Die Einstellung <code>number_of_replicas</code> hat einen erheblichen Einfluss auf die Leistungsfähigkeit und Stabilität Ihres Elasticsearch- <a href="https://opster.com/guides/elasticsearch/glossary/elasticsearch-cluster/">Clusters</a>. Hier einige wichtige Punkte, die Sie beachten sollten:</p><ol><li><p><strong>Datenredundanz und Verfügbarkeit:</strong> Durch die Erhöhung von <code>number_of_replicas</code> wird die Verfügbarkeit Ihrer Daten verbessert, indem mehr Kopien jedes Shards erstellt werden. Wenn ein Knoten ausfällt, kann Elasticsearch weiterhin Daten von den Replikat-Shards auf den verbleibenden <a href="https://opster.com/guides/elasticsearch/glossary/elasticsearch-node/">Knoten</a> bereitstellen.</p></li><li><p><strong>Suchleistung:</strong> Replikat-Shards können Leseanfragen bedienen, daher kann eine größere Anzahl von Replikaten die Suchleistung verbessern, indem die Last auf mehr Shards verteilt wird.</p></li><li><p><strong>Schreibperformance:</strong> Allerdings muss jeder Schreibvorgang auf jeder Kopie eines Shards durchgeführt werden. Daher kann ein höherer Wert <code>number_of_replicas</code> die <a href="https://opster.com/guides/elasticsearch/glossary/elasticsearch-indexing/">Indexierungsleistung</a> verlangsamen, da er die Anzahl der Operationen erhöht, die für jeden Schreibvorgang durchgeführt werden müssen.</p></li><li><p><strong>Speicherbedarf:</strong> Mehr Replikate bedeuten mehr Speicherplatz. Sie sollten sicherstellen, dass Ihr Cluster über genügend Kapazität verfügt, um die zusätzlichen Replikate zu speichern.</p></li><li><p><strong>Ausfallsicherheit bei Knoten:</strong> Der <code>number_of_replicas</code> sollte unter Berücksichtigung der Anzahl der Knoten in Ihrem Cluster festgelegt werden. Wenn <code>number_of_replicas</code> gleich oder größer als die Anzahl der Knoten ist, kann Ihr Cluster den Ausfall mehrerer Knoten ohne Datenverlust tolerieren.</p></li></ol><h2>Bewährte Vorgehensweisen zum Festlegen der Anzahl der Replikate</h2><p>Die optimale Einstellung <code>number_of_replicas</code> hängt von den spezifischen Anforderungen Ihres Systems ab. Hier sind jedoch einige allgemeine Best Practices:</p><ul><li><p>Bei einem Cluster mit nur einem Knoten sollte <code>number_of_replicas</code> auf 0 gesetzt werden, da keine weiteren Knoten vorhanden sind, die Replikate aufnehmen könnten.</p></li><li><p>Bei einem Multi-Node-Cluster sollte <code>number_of_replicas</code> mindestens auf 1 gesetzt werden, um Datenredundanz und hohe Verfügbarkeit zu gewährleisten.</p></li><li><p>Wenn die Suchleistung Priorität hat, sollten Sie die Anzahl der Einträge <code>number_of_replicas</code> erhöhen. Man sollte jedoch den Zielkonflikt zwischen Schreibleistung und Speicherbedarf berücksichtigen.</p></li><li><p>Stellen Sie stets sicher, dass Ihr Cluster über ausreichend Kapazität zur Speicherung der zusätzlichen Replikate verfügt.</p></li></ul>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-index-number-of_replicas</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-index-number-of_replicas</guid>
    <category><![CDATA[Grundlagen]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd041e871a8935448/6a17de320b0bedf404dd34ab/23b96aaa1a38b1f4747b4a87695d816f24c0cf70-720x421.jpg" length="0" type="image/jpeg"/>
    <pubDate>Wed, 14 May 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Elasticsearch-Felder von der Indizierung ausschließen]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie Elasticsearch konfigurieren, um Felder auszuschließen, die Hauptgründe für das Ausschließen von Feldern aus dem Indizieren und die zu befolgenden Best Practices.]]></description>
    <content:encoded><![CDATA[<p>In Elasticsearch bezeichnet Indexierung den Prozess des Speicherns und Organisierens von Daten, sodass diese leicht durchsuchbar sind. Während die Indizierung aller Felder eines Dokuments in manchen Fällen sinnvoll sein kann, gibt es Situationen, in denen man bestimmte Felder von der Indizierung ausschließen möchte. Dies kann dazu beitragen, die Leistung zu verbessern, die Speicherkosten zu senken und die Gesamtgröße Ihres Elasticsearch-Index zu minimieren.</p><p>In diesem Artikel werden wir die Gründe für den Ausschluss von Feldern aus der Indizierung, die Konfiguration von Elasticsearch zum Ausschluss bestimmter Felder und einige bewährte Vorgehensweisen dabei erläutern.</p><h2>Gründe für den Ausschluss von Feldern aus der Indizierung</h2><ol><li><p><strong>Leistung: </strong>Die Indizierung aller Felder in einem Dokument kann zu längeren Indizierungszeiten und einer langsameren Suchleistung führen. Durch den Ausschluss von Feldern, die für die Suche oder Aggregation nicht erforderlich sind, können Sie die Gesamtleistung Ihres Elasticsearch-Clusters verbessern.</p></li><li><p><strong>Speicherplatz: </strong>Das Indizieren von Feldern benötigt Speicherplatz. Durch das Ausschließen von Feldern, die für die Suche oder Aggregation nicht benötigt werden, können die Speicheranforderungen Ihres Elasticsearch-Clusters reduziert werden.</p></li><li><p><strong>Indexgröße: </strong>Die Größe eines Elasticsearch-Index steht in direktem Zusammenhang mit der Anzahl der indizierten Felder. Durch den Ausschluss unnötiger Felder können Sie die Größe Ihres Index minimieren, was zu einer schnelleren Such- und Indexierungsleistung führen kann.</p></li></ol><h2>Elasticsearch so konfigurieren, dass Felder ausgeschlossen werden</h2><p>Um ein Feld von der Indizierung in Elasticsearch auszuschließen, können Sie die „index“-Eigenschaft in der Feldzuordnung verwenden. Wenn die Eigenschaft „index“ auf „false“ gesetzt wird, wird Elasticsearch das Feld nicht indizieren, und es ist weder durchsuchbar noch für Aggregationen verfügbar.</p><p>Hier ist ein Beispiel dafür, wie man ein Feld mithilfe des Elasticsearch-Mappings von der Indizierung ausschließt:</p>PUT /my_index
{
  "mappings": {
    "properties": {
      "field_to_exclude": {
        "type": "text",
        "index": false
      }
    }
  }
}<p>In diesem Beispiel erstellen wir einen neuen Index namens „my_index“ mit einem einzigen Feld namens „field_to_exclude“. Indem wir die Eigenschaft „index“ auf „false“ setzen, weisen wir Elasticsearch an, dieses Feld nicht zu indizieren. Das Feld wird jedoch im Quelldokument weiterhin verfügbar sein.</p><h2>Bewährte Verfahren zum Ausschließen von Feldern von der Indizierung</h2><ol><li><p><strong>Analysieren Sie Ihre Daten: </strong>Bevor Sie Felder von der Indizierung ausschließen, ist es unerlässlich, Ihre Daten zu analysieren und zu verstehen, welche Felder für die Suche und Aggregation notwendig sind. Dies wird Ihnen helfen, fundierte Entscheidungen darüber zu treffen, welche Felder ausgeschlossen werden sollen.</p></li><li><p><strong>Testen Sie Ihre Änderungen: </strong>Wenn Sie Felder von der Indizierung ausschließen, ist es unerlässlich, Ihre Änderungen zu testen, um sicherzustellen, dass Ihre Such- und Aggregationsfunktionen weiterhin wie erwartet funktionieren. Dies kann Ihnen helfen, unerwartete Probleme oder Leistungsstörungen zu vermeiden.</p></li><li><p><strong>Leistungsüberwachung:</strong> Nachdem Sie Felder von der Indizierung ausgeschlossen haben, sollten Sie die Leistung Ihres Elasticsearch-Clusters überwachen, um sicherzustellen, dass Ihre Änderungen den gewünschten Effekt erzielt haben. Dies kann Ihnen dabei helfen, eventuell erforderliche zusätzliche Optimierungen zu identifizieren.</p></li><li><p><strong>Quellfilterung nutzen:</strong> Wenn Sie ein Feld in Elasticsearch speichern müssen, es aber nicht durchsuchbar oder für Aggregationen verfügbar sein soll, sollten Sie die Quellfilterung in Betracht ziehen. Dies ermöglicht es Ihnen, das Feld im Feld _source zu speichern, es aber vom Index auszuschließen.</p></li></ol><h2>Fazit</h2><p>Das Ausschließen von Feldern von der Indizierung in Elasticsearch kann die Leistung verbessern, die Speicherkosten senken und die Gesamtgröße Ihres Index minimieren. Durch eine sorgfältige Analyse Ihrer Daten und das Verständnis, welche Felder für die Suche und Aggregation notwendig sind, können Sie fundierte Entscheidungen darüber treffen, welche Felder ausgeschlossen werden sollten. Testen Sie Ihre Änderungen stets und überwachen Sie die Leistung Ihres Elasticsearch-Clusters, um sicherzustellen, dass Ihre Optimierungen den gewünschten Effekt erzielen.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/excluding-elasticsearch-fields-from-indexing</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/excluding-elasticsearch-fields-from-indexing</guid>
    <category><![CDATA[Index-Daten]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt399bcc5a2e55bfe0/6a1708b45091684557e1ba3c/3aa0b481994d2445ba979d3c79fff64c5ee6676a-720x420.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Löschen eines Feldes aus einem Dokument in Elasticsearch]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie Felder aus Elasticsearch-Dokumenten mithilfe der Update-API, von Skripten oder durch Neuindizierung für einzelne und massenhafte Entfernungen löschen können.]]></description>
    <content:encoded><![CDATA[<p>In Elasticsearch ist das Löschen eines Feldes aus einem Dokument eine häufige Anforderung. Dies kann nützlich sein, wenn Sie unnötige oder veraltete Informationen aus Ihrem Index entfernen möchten. In diesem Artikel werden wir verschiedene Methoden zum Löschen eines Feldes aus einem Dokument in Elasticsearch besprechen und Beispiele sowie Schritt-für-Schritt-Anleitungen geben. </p><h2>Methode 1: Verwendung der Update-API</h2><p>Die <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/update-document">Update-API</a> ermöglicht es Ihnen, ein Dokument zu aktualisieren, indem Sie ein Skript bereitstellen, das die Quelle des Dokuments ändert. Mit dieser API können Sie ein Feld aus einem Dokument löschen, indem Sie das Feld auf Null setzen. Hier ist eine Schritt-für-Schritt-Anleitung dazu:</p><p>1. Ermitteln Sie den Index, den Dokumenttyp (falls Sie Elasticsearch 6.x oder eine ältere Version verwenden) und die Dokument-ID des Dokuments, das Sie aktualisieren möchten.</p><p>2. Verwenden Sie die Update-API mit einem Skript, das das Feld auf null setzt oder, noch besser, es aus dem Quelldokument entfernt. Das folgende Beispiel zeigt, wie das Feld „field_to_delete“ aus einem Dokument mit der ID „1“ im Index „my_index“ gelöscht wird:</p>POST /my_index/_update/1
{
  "script": "ctx._source.remove('field_to_delete')"
}<p>3. Führe die Anfrage aus. Im Erfolgsfall gibt Elasticsearch eine Antwort zurück, die anzeigt, dass das Dokument aktualisiert wurde.</p><p>Hinweis: Diese Methode entfernt das Feld nur aus dem angegebenen Dokument. Das Feld wird weiterhin in der Zuordnung und in anderen Dokumenten im Index vorhanden sein.</p><h2>Methode 2: Reindexierung mit einer modifizierten Quelle</h2><p>Wenn Sie ein Feld aus allen Dokumenten in einem Index löschen möchten, können Sie die <a href="https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-reindex">Reindex-API</a> verwenden, um einen neuen Index mit der modifizierten Quelle zu erstellen. So machen Sie das:</p><p>1. Erstellen Sie einen neuen Index mit den gleichen Einstellungen und Zuordnungen wie der ursprüngliche Index. Mit der Get Index API können Sie die Einstellungen und Zuordnungen des ursprünglichen Index abrufen.</p><p>2. Verwenden Sie die Reindex-API, um Dokumente vom ursprünglichen Index in den neuen Index zu kopieren und dabei das Feld aus der Quelle zu entfernen. Das folgende Beispiel zeigt, wie das Feld „field_to_delete“ aus allen Dokumenten im Index „my_index“ gelöscht wird:</p>POST /_reindex
{
  "source": {
    "index": "my_index"
  },
  "dest": {
    "index": "new_index"
  },
  "script": {
    "source": "ctx._source.remove('field_to_delete')"
  }
}<p>
3. Überprüfen Sie, ob der neue Index die korrekten Dokumente enthält, nachdem das Feld entfernt wurde.</p><p>4. Wenn alles in Ordnung ist, können Sie den ursprünglichen Index löschen und gegebenenfalls einen Alias für den neuen Index hinzufügen, der den Namen des ursprünglichen Index trägt.</p><h2>Methode 3: Aktualisierung des Mappings und der Neuindexierung</h2><p>Wenn Sie ein Feld aus der Zuordnung und alle Dokumente in einem Index löschen möchten, können Sie die Zuordnung aktualisieren und anschließend die Dokumente neu indizieren. So geht's:</p><p>1. Erstellen Sie einen neuen Index mit den gleichen Einstellungen wie der ursprüngliche Index.</p><p>2. Rufen Sie die Zuordnungen des ursprünglichen Index mithilfe der Get Mapping API ab.</p><p>3. Ändern Sie die Zuordnungen, indem Sie das Feld entfernen, das Sie löschen möchten.</p><p>4. Wenden Sie die geänderten Zuordnungen mithilfe der Put Mapping API auf den neuen Index an.</p><p>5. Verwenden Sie die Reindex-API, um Dokumente vom ursprünglichen Index in den neuen Index zu kopieren, wie in Methode 2 beschrieben.</p><p>6. Überprüfen Sie, ob der neue Index die korrekten Dokumente enthält, wobei das Feld entfernt wurde, und ob das Feld in der Zuordnung nicht vorhanden ist.</p><p>7. Wenn alles gut aussieht, können Sie den ursprünglichen Index löschen und gegebenenfalls einen Alias mit dem Namen des ursprünglichen Index zum neuen Index hinzufügen.</p><h2>Fazit</h2><p>In diesem Artikel haben wir drei Methoden zum Löschen eines Feldes aus einem Dokument in Elasticsearch besprochen: die Verwendung der Update-API, die Neuindizierung mit einer geänderten Quelle und die Aktualisierung des Mappings mit anschließender Neuindizierung. Jede Methode hat ihre eigenen Anwendungsfälle und Vor- und Nachteile. Wählen Sie daher diejenige, die am besten zu Ihren Anforderungen passt. Denken Sie immer daran, Ihre Änderungen zu testen und die Ergebnisse zu überprüfen, bevor Sie sie in Produktionsumgebungen anwenden.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-delete-field-from-document</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-delete-field-from-document</guid>
    <category><![CDATA[Grundlagen]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8deb617c89943b69/6a17e26c4b055d209e43212f/89278eb7309b7f3018c61be2b514d1fd25b9564d-720x420.jpg" length="0" type="image/jpeg"/>
    <pubDate>Fri, 09 May 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Elasticsearch-Scoring und die Explain-API verstehen]]></title>
    <description><![CDATA[Lernen Sie die Bewertungsmechanismen von Elasticsearch und die praktische Bewertungsfunktion kennen, um mit der Explain API die Suchrelevanz zu prüfen und das Dokumentenranking zu verbessern.]]></description>
    <content:encoded><![CDATA[<p>Elasticsearch ist eine leistungsstarke Suchmaschine, die schnelle und relevante Suchergebnisse liefert, indem sie für jedes Dokument im Index eine Punktzahl berechnet. Diese Punktzahl ist ein entscheidender Faktor für die Reihenfolge der Suchergebnisse. In diesem Artikel werden wir uns mit dem Scoring-Mechanismus von Elasticsearch befassen und die Explain API untersuchen, die zum Verständnis des Scoring-Prozesses beiträgt.</p><h2>Bewertungsmechanismen in Elasticsearch</h2><p>Elasticsearch verwendet standardmäßig ein Bewertungsmodell namens Practical Scoring Function (BM25). Dieses Modell basiert auf der probabilistischen Information-Retrieval-Theorie und berücksichtigt Faktoren wie Termfrequenz, inverse Dokumentfrequenz und Feldlängennormalisierung. Lassen Sie uns diese Faktoren kurz besprechen:</p><ol><li><p><strong>Termfrequenz (TF):</strong> Dies gibt an, wie oft ein Begriff in einem Dokument vorkommt. Eine höhere Termfrequenz deutet auf eine stärkere Beziehung zwischen dem Begriff und dem Dokument hin.</p></li><li><p><strong>Inverse Dokumenthäufigkeit (IDF):</strong> Dieser Faktor misst die Bedeutung eines Begriffs innerhalb der gesamten Dokumentensammlung. Ein Begriff, der in vielen Dokumenten vorkommt, gilt als weniger wichtig, während ein Begriff, der in weniger Dokumenten vorkommt, als wichtiger gilt.</p></li><li><p><strong>Feldlängennormalisierung</strong>: Dieser Faktor berücksichtigt die Länge des Feldes, in dem der Term vorkommt. Kürzere Felder werden stärker gewichtet, da der Begriff in einem kürzeren Feld als bedeutsamer angesehen wird.</p></li></ol><h2>Verwendung der Explain-API</h2><p>Die Explain API in Elasticsearch ist ein wertvolles Werkzeug zum Verständnis des Scoring-Prozesses. Es bietet eine detaillierte Erklärung, wie die Punktzahl für ein bestimmtes Dokument berechnet wurde. Um die Explain-API zu verwenden, müssen Sie eine GET-Anfrage an den folgenden Endpunkt senden:</p>GET /&lt;index&gt;/_explain/&lt;document_id&gt;<p>Im Anfragetext müssen Sie die Abfrage angeben, für die Sie die Bewertung verstehen möchten. Hier ein Beispiel:</p>{
  "query": {
    "match": {
      "title": "elasticsearch"
    }
  }
}<p>Die Antwort der Explain API enthält eine detaillierte Aufschlüsselung des Bewertungsprozesses, einschließlich der einzelnen Faktoren (TF, IDF und Feldlängennormalisierung) und deren Beitrag zur Endwertung. Hier ist eine Beispielantwort:</p>{
  "_index": "example_index",
  "_type": "_doc",
  "_id": "1",
  "matched": true,
  "explanation": {
    "value": 1.2,
    "description": "weight(title:elasticsearch in 0) [PerFieldSimilarity], result of:",
    "details": [
      {
        "value": 1.2,
        "description": "score(doc=0,freq=1.0 = termFreq=1.0\n), product of:",
        "details": [
          {
            "value": 2.2,
            "description": "idf, computed as log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) from:",
            "details": [
              {
                "value": 1,
                "description": "docFreq",
                "details": []
              },
              {
                "value": 1,
                "description": "docCount",
                "details": []
              }
            ]
          },
          {
            "value": 0.5,
            "description": "tfNorm, computed as (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)) from:",
            "details": [
              {
                "value": 1,
                "description": "termFreq=1.0",
                "details": []
              },
              {
                "value": 1.2,
                "description": "parameter k1",
                "details": []
              },
              {
                "value": 0.75,
                "description": "parameter b",
                "details": []
              },
              {
                "value": 1,
                "description": "avgFieldLength",
                "details": []
              },
              {
                "value": 1,
                "description": "fieldLength",
                "details": []
              }
            ]
          }
        ]
      }
    ]
  }
}<p>In diesem Beispiel zeigt die Antwort, dass der Wert von 1,2 das Produkt aus dem IDF-Wert (2,2) und dem tfNorm-Wert (0,5) ist. Die detaillierte Erklärung hilft, die Faktoren zu verstehen, die zur Bewertung beitragen, und kann für die Feinabstimmung der Suchrelevanz nützlich sein.</p><h2>Fazit</h2><p>Die Bewertung durch Elasticsearch ist ein entscheidender Aspekt bei der Bereitstellung relevanter Suchergebnisse. Indem Sie die Bewertungsmechanismen verstehen und die Explain API nutzen, können Sie Einblicke in die Faktoren gewinnen, die die Suchergebnisse beeinflussen, und Ihre Suchanfragen im Hinblick auf bessere Relevanz und Leistung optimieren.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-scoring-and-explain-api</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-scoring-and-explain-api</guid>
    <category><![CDATA[Grundlagen]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbe7de1872f1527e3/6a17de303e9e452974ba1374/a70c5403064d5bbceff66a17373332362227f13c-720x420.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 05 May 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Indexvorlagen in Elasticsearch: Wie man zusammensetzbare Vorlagen verwendet]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie in Elasticsearch zusammensetzbare und komponentenbasierte Indexvorlagen erstellen, um konsistente Mappings sicherzustellen und die Indexkonfiguration zu automatisieren.]]></description>
    <content:encoded><![CDATA[<p>Ein Elasticsearch-Index kann über Mapping, Einstellungen und Aliase konfiguriert werden: </p><ul><li><p>Mapping-Definitionen legen das Datenschema fest.</p></li><li><p>In den Einstellungen werden die Shard-Größe und die Aktualisierungsraten festgelegt. </p></li><li><p>Aliase werden verwendet, um dem Index alternative Namen zu geben.</p></li></ul><p>Wenn wir ein Dokument zum ersten Mal indexieren oder einen leeren Index mithilfe der Create Index API erstellen, wird der Index mit Standardeinstellungen, ohne Datenschema und ohne Aliase erstellt. Diese Standardeinstellungen funktionieren in Entwicklungs- und Testumgebungen recht gut, aber für Produktionsumgebungen müssen wir unsere Indizes möglicherweise anpassen.</p><p>Die Verwendung der Standardzuordnungen und -einstellungen in der Produktionsumgebung kann zu einer schlechten Indexierungs- und Suchleistung führen. Das manuelle Erstellen von Indizes ist ein mühsamer und zeitaufwändiger Prozess. Die Neuerstellung solcher Indizes in jeder Umgebung ist besonders unpraktisch, wenn wir ein aufwendiges Mapping-Schema sowie benutzerdefinierte Einstellungen und Aliase haben.</p><p>Glücklicherweise stellt Elasticsearch uns ein Werkzeug zur Verfügung, mit dem wir beim Erstellen von Indizes automatisch eine vordefinierte Konfiguration in Form von <em>Indexvorlagen</em> anwenden können <em>.</em></p><h2>Indexvorlagen</h2><p>Indexvorlagen ermöglichen es uns, Indizes mit benutzerdefinierter Konfiguration zu erstellen. Ein Index kann die Konfiguration aus diesen Vorlagen abrufen, beispielsweise eine festgelegte Anzahl von Shards und Replikaten oder Feldzuordnungen, während seiner Instanziierung. Es wird eine Vorlage mit einem Namensmuster und einigen Konfigurationseinstellungen definiert. Wenn der Name des Index mit dem Namensmuster der Vorlage übereinstimmt, wird der neue Index mit der in der Vorlage definierten Konfiguration erstellt.</p><p>Elasticsearch hat in Version 7.8 seine Template-Funktionalität mit zusammensetzbaren Templates verbessert. Diese neuere Version bietet wesentlich mehr wiederverwendbare Indexvorlagen, wie in diesem Artikel gezeigt wird.</p><h3>Arten von Indexvorlagen</h3><p>Indexvorlagen lassen sich in zwei Kategorien einteilen:</p><ul><li><p><strong>Indexvorlagen (oder zusammensetzbare Indexvorlagen)</strong>: Die zusammensetzbaren Indexvorlagen können entweder allein existieren oder aus keiner oder mehreren Komponentenvorlagen zusammengesetzt sein (siehe die zweite Kategorie).</p></li><li><p><strong>Komponentenvorlagen:</strong> Die Komponentenvorlage ist eine <em>wiederverwendbare</em> Vorlage, die die erforderliche Konfiguration definiert. Üblicherweise wird erwartet, dass die Komponentenvorlage mit einer Indexvorlage verknüpft ist. Jede der Komponentenvorlagen kann mit einer oder mehreren Indexvorlagen verknüpft werden. </p></li></ul><p>Wie Sie im Bild unten sehen können, teilen sich die Indexvorlagen A und B Komponentenvorlagen (in diesem Fall nur eine – Vorlage 3). Eine Indexvorlage kann aus keiner oder mehreren Komponentenvorlagen bestehen, und jede der Komponentenvorlagen kann keiner oder mehreren Indexvorlagen zugeordnet sein. Beide Arten von Vorlagen können eigenständig existieren, jedoch sind Komponentenvorlagen nur dann nützlich, wenn sie an eine Indexvorlage angehängt werden.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7fca132e0eb86c50/6a17f5b7ec0f8982a65a678c/96c0aac29d3992e54a79be34e14cf909e0ca2ea9-1202x556.png" alt="Indexvorlagen in Elasticsearch und deren Komponenten." /><p>Die Grundidee besteht darin, einen Katalog von Komponentenvorlagen zu entwickeln, die eine Organisation für verschiedene Zwecke nutzen kann (z. B. die verschiedenen Komponentenvorlagen für einzelne Umgebungen festlegen) und diese über die zusammensetzbaren Indexvorlagen verschiedenen Indizes zuzuordnen.</p><h2>Wie man zusammensetzbare (Index-)Vorlagen erstellt</h2><p>Elasticsearch bietet einen _index_template-Endpunkt zur Verwaltung von Indexvorlagen. Der Benutzer gibt in dieser Vorlage alle erforderlichen Zuordnungen, Einstellungen und Aliase sowie ein Indexnamensmuster an. Betrachten wir ein Beispiel für die Erstellung einer Vorlage für eine Microservice-Anwendung <em>namens customer-order-service</em> , die für die Logik zur Auftragsgenerierung zuständig ist. </p><p>Nehmen wir an, unsere Anforderung ist es, eine Vorlage für Kundenbestellungen zu erstellen, die durch ein Muster mit Platzhaltern dargestellt wird: *orders. Diese Vorlage muss bestimmte Zuordnungen und Einstellungen enthalten, wie zum Beispiel das Feld order_date sowie Shard- und Replikatnummern.</p><p>Jeder Index, der bei seiner Erstellung mit dieser Vorlage übereinstimmt, erbt die in dieser Vorlage definierten Konfigurationen. Ein Index namens black_friday_orders beispielsweise hat das Feld order_date, die Anzahl der Shards ist auf 5 und die Anzahl der Replikate auf 2 festgelegt. Darüber hinaus erben <em>alle</em> aus dieser Vorlage erstellten Indizes auch einen einzigen <a href="https://opster.com/guides/elasticsearch/glossary/elasticsearch-alias/">Aliasnamen</a> ! Erstellen wir nun diese orders_template mit einem Indexmuster, das als *orders definiert ist, und einem Mapping-Schema, das aus einem einzigen Feld der_date mit dem vordefinierten Datumsformat dd-MM-yyyy besteht. Der folgende Code zeigt, wie diese Indexvorlage erstellt wird.</p>PUT _index_template/orders_template
{
  "index_patterns": ["*orders"],
  "priority": 300,
  "template": {
    "mappings": {
      "properties": {
        "order_date": {
          "type": "date",
          "format":"dd-MM-yyyy"
        }
      }
    },
    "settings":{
      "number_of_shards":5,
      "number_of_replicas":2
    },
    "aliases":{
      "all_orders":{}
    }
  }
}<p>Wenn Sie diese Abfrage in den Kibana DevTools ausführen, wird die Vorlage mit dem Indexmuster *orders zusammen mit dem vordefinierten Mapping, den Einstellungen und einem Alias erstellt. index_patterns ist ein Array von Übereinstimmungsmustern; jeder Index, der diesem Muster entspricht, leitet die Vorlagenkonfiguration ab. Sie können folgenden Befehl ausführen, um die gespeicherte Vorlage abzurufen, die unsere Aktionen wiederholen sollte:</p>GET _index_template/orders_template <p>Außerdem wird beim Erstellen des Vorlagenattributs, das in der Vorlage definiert ist, eine Priorität, eine positive Zahl, festgelegt: Jede Vorlage wird mit einer Priorität definiert, sodass etwaige Konflikte zwischen Änderungen aus verschiedenen Vorlagen durch Verwendung dieses Wertes aufgelöst werden, wobei dem Wert mit der höheren Priorität Vorrang eingeräumt wird. Wir werden uns weiter unten eingehender mit der Priorisierung von Vorlagen befassen.</p><h2>Erstellen eines Index mit der Vorlage</h2><p>Jetzt haben wir eine Vorlage – einen Bauplan für die Erstellung von Indizes – der nächste Schritt ist die Erstellung eines Indexes. Wenn der Name des Index mit dem angegebenen Muster übereinstimmt, werden die Vorlagenkonfigurationen automatisch angewendet. Um dies zu beweisen, erstellen wir, wie der folgende Code zeigt, einen brandneuen Index mit dem Namen: blackfriday_orders:</p>PUT blackfriday_orders<p>Da der Name des Index (blackfriday_orders) mit dem im Template definierten Namensmuster übereinstimmt (d. h. *orders), sollte der Index alle aus der Vorlage abgeleiteten Konfigurationen erhalten. Lassen Sie uns diesen neu erstellten Index abrufen und überprüfen, ob dies tatsächlich zutrifft, indem wir den folgenden Code ausführen:</p>GET blackfriday_orders<p>Dies sollte folgendes Ergebnis liefern:</p>{
  "blackfriday_orders" : {
    "aliases" : {
      "all_orders" : { }
    },
    "mappings" : {
      "properties" : {
        "order_date" : {
          "type" : "date",
          "format" : "dd-MM-yyyy"
        }
      }
    },
    "settings" : {
      "index" : {
         ...
        "number_of_shards" : "5",
        "number_of_replicas" : "2"
      }
    }
  }
}<p>Wie die Antwort zeigt, wurde die Konfiguration von blackfriday_orders aus der Vorlage übernommen. Wir können verschiedene Kombinationen der Indizes ausprobieren, die die Vorlagenkonfiguration erfolgreich übernehmen:</p>PUT blackfriday_orders
PUT americaorders
PUT cancelled--orders
PUT undefined101orders<p>Die folgenden Indizes werden die Konfiguration jedoch nicht übernehmen, da ihr Name nicht dem Muster entspricht:</p>PUT blackfriday_orders2
PUT open_orders_
PUT allorders_total<p>Wichtig zu beachten ist, dass alle von einer Vorlage abgeleiteten Indizes in diesem Fall denselben Alias haben – all_orders. Ein solcher Alias hat den Vorteil, dass wir einfach über diesen einen Alias anstatt über mehrere Indizes abfragen können.</p>GET blackfriday_orders,americaorders,undefined101orders/_search
GET all_orders/_search 
{
  "query": {
    "range": {
      "order_date": {
        "gte": "01-12-2021",
        "lte": "31-12-2021"
      }
    }
  }
}<p>Während wir eine Vorlage für *orders erstellen, wird erwartet, dass jeder übereinstimmende Index die Konfiguration der Vorlage übernimmt. In der Regel erstellen Teams, bewusst oder unbewusst, aus verschiedenen Gründen einige zusätzliche Vorlagen. Das bedeutet, dass der Indexname unter Umständen mit zwei verschiedenen Vorlagenmustern übereinstimmen kann! Elasticsearch muss entscheiden, welche der Konfigurationen aus diesen Vorlagen angewendet werden soll. Glücklicherweise lässt sich dieses Dilemma durch die Verwendung der Vorlagenpriorität lösen.</p><h2>Erstellung von Komponentenvorlagen</h2><p>Wir haben im vorangegangenen Teil dieses Artikels etwas über Indexvorlagen gelernt. Es gibt ein paar Nachteile bei der Erstellung der Vorlagen mit integrierter Konfiguration – einer dieser Nachteile ist, dass die Konfiguration nicht für andere Vorlagen exportiert werden kann. Wenn wir eine ähnliche Konfiguration wünschen, beispielsweise für kundenbezogene Vorlagen (*customers), müssen wir möglicherweise die gesamte Vorlage neu erstellen. Das bedeutet, dass wir in einer typischen Organisation Dutzende davon erstellen (und je nach Umgebung können noch einige weitere hinzukommen).</p><p>Da wir stets auf Wiederverwendbarkeit Wert legen, hat Elasticsearch die Templates unter Berücksichtigung der Wiederverwendbarkeit neu gestaltet. Die Komponentenvorlagen erfüllen diese Anforderung. Wenn Sie aus dem DevOps-Bereich kommen, besteht für Sie höchstwahrscheinlich die Anforderung, Indizes mit einer vordefinierten Konfiguration für jede Umgebung zu erstellen. Anstatt jede dieser Konfigurationen mühsam manuell anzuwenden, können Sie für jede Umgebung eine Komponentenvorlage erstellen.</p><p>Eine Komponentenvorlage ist nichts anderes als ein wiederverwendbarer Konfigurationsblock, mit dem wir weitere Indexvorlagen erstellen können. Beachten Sie, dass die Komponentenvorlagen nur dann einen Nutzen haben, wenn sie mit Indexvorlagen kombiniert werden. Sie werden über einen _component_template-Endpunkt bereitgestellt. Mal sehen, wie das alles zusammenpasst.</p><h3>Einstellungen in einer Indexvorlage</h3><p>Lassen Sie uns die Einstellungen, die wir zuvor in unserer Indexvorlage definiert haben, extrahieren und daraus eine Komponentenvorlage erstellen. Es wird erwartet, dass die settings_component_template fünf primäre Shards mit jeweils zwei Replikaten pro primärem Shard besitzt. Der erste Schritt besteht, wie die untenstehende Codeauflistung zeigt, darin, eine Komponentenvorlage mit dieser Konfiguration zu deklarieren und auszuführen.</p>PUT _component_template/settings_component_template
{
  "template":{
    "settings":{
      "number_of_shards":5,
      "number_of_replicas":2
    }
  }
}<p>Wie der obige Code zeigt, verwenden wir den Endpunkt _component_template, um eine Komponentenvorlage zu erstellen. Der Anfragetext enthält die Vorlageninformationen in einem Vorlagenobjekt. Die settings_component_template kann nun auch an anderer Stelle in den Indexvorlagen verwendet werden. Ein wesentlicher Unterschied besteht darin, dass diese Vorlage kein Indexmuster definiert; es handelt sich lediglich um einen Codeblock, der einige Eigenschaften für uns konfiguriert.</p><h3>Mapping-Vorlage</h3><p>Erstellen wir auf die gleiche Weise eine weitere Vorlage. Dieses Mal extrahieren wir das Mapping-Schema, das wir zuvor in den eigenständigen Indexvorlagen definiert hatten. Der folgende Code zeigt das Skript:</p>PUT _component_template/mappings_component_template
{
  "template": {
    "mappings": {
      "properties": {
        "order_date": {
          "type": "date",
          "format":"dd-MM-yyyy"
        }
      }
    }
  }
}<h3>Aliasvorlage</h3><p>Im gleichen Sinne können wir auch eine Komponentenvorlage mit den Aliasen haben – zwei Aliase (all_orders und sales_orders):</p>PUT _component_template/aliases_component_template
{
  "template": {
    "aliases": {
      "all_orders": {},
      "sales_orders":{}
    }
  }
}<h3>Vorlage für einen zusammensetzbaren Index</h3><p>Nachdem wir nun diese drei Komponentenvorlagen haben, besteht der nächste Schritt darin, sie einzusetzen. Wir können dies erreichen, indem wir eine Indexvorlage, beispielsweise für christmas_orders, diese verwenden lassen:</p>PUT _index_template/composed_orders_template
{
  "index_patterns": [
    "*orders"
  ],
  "priority": 500,
  "composed_of": [
    "settings_component_template",
    "mappings_component_template",
    "aliases_component_template"
  ]
}<p>Das `composed_of`-Tag ist eine Sammlung aller Komponentenvorlagen, aus denen diese Vorlage besteht. In diesem Fall wählen wir die Komponentenvorlagen für Einstellungen, Zuordnungen und Aliase aus. Wir erhöhen außerdem die Priorität, sodass diese Vorlage alle anderen übertrifft. Sobald die Vorlage fertig ist, erben alle Indizes, die dem Muster *orders entsprechen, die Konfiguration von diesen drei Komponentenvorlagen.</p><p>Wenn wir nun eine neue Vorlage, beispielsweise für Kunden, mit nur einer der bestehenden Vorlagen (settings_component_template) und einer neu erstellten Aliasvorlage (aliases_component_template – siehe unten) erstellen möchten, können wir dies wie folgt tun:</p>PUT _component_template/aliases_component_template2
{
  "template": {
    "aliases": {
      "all_customers": {}
    }
  }
}<p>Die Indexvorlage sieht folgendermaßen aus:</p>PUT _index_template/composed_customers_template
{
  "index_patterns": [
    "*customers*"
  ],
  "priority": 200,
  "composed_of": [
    "settings_component_template",
    "aliases_component_template2"
  ]
}<p>Ist Ihnen aufgefallen, dass die settings_component_template in zwei verschiedenen Templates (wieder)verwendet wurde? Das ist die Stärke von Komponentenvorlagen.</p><h2>Indexvorlagenpriorität</h2><p>Es besteht die Möglichkeit, dass Entwickler mehrere Indexvorlagen erstellen, ohne den vorhandenen Bestand zu berücksichtigen. Es ist wichtig, jeder dieser Vorlagen eine Priorität zuzuweisen, damit diejenige mit der höheren Priorität verwendet wird. Beispielsweise überschreibt my_orders_template_1 im folgenden Codeausschnitt my_orders_template_2:</p>PUT _index_template/my_orders_template_1
{
  "index_patterns": ["*orders"],
  "priority": 1000,
  "template": { ... }
}
PUT _index_template/my_orders_template2
{
  "index_patterns": ["*orders"],
  "priority": 300,
  "template": { ... }
}<p>Wenn mehrere Vorlagen zu den zu erstellenden Indizes passen, wendet Elasticsearch alle Konfigurationen aus allen passenden Vorlagen an, überschreibt aber alle Konfigurationen mit höherer Priorität.</p><h2>Priorität der Vorlagen</h2><p>Abschließend stellt sich vielleicht die Frage nach der Priorität der Vorlagen – überschreibt die in der Komponentenvorlage definierte Konfiguration diejenige, die in der Hauptindexvorlage selbst definiert ist? Oder umgekehrt? Nun ja, es gibt einige Regeln:</p><ul><li><p>Ein Index, der mit expliziten Konfigurationen erstellt wurde, hat Vorrang vor allem anderen – das bedeutet, wenn Sie einen Index mit expliziten Konfigurationen erstellen, können Sie nicht davon ausgehen, dass diese von den Vorlagen überschrieben werden.</p></li><li><p>Legacy-Vorlagen (Vorlagen, die vor Version 7.8 erstellt wurden) haben eine niedrigere Priorität als die zusammensetzbaren Vorlagen.</p></li></ul><h2>Zusammenfassung</h2><ul><li><p>Ein Index enthält Mappings, Einstellungen und Aliase: Die Mappings definieren das Feldschema, die Einstellungen legen die Indexparameter wie die Anzahl der Shards und Replikate fest, und die Aliase geben dem Index alternative Namen.</p></li><li><p>Mithilfe von Vorlagen können wir Indizes mit vordefinierten Konfigurationen erstellen. Wenn ein Index mit einem Namen benannt wird, der dem in einer bestimmten Vorlage definierten Indexmuster entspricht, wird dieser Index automatisch gemäß der Vorlage konfiguriert.</p></li><li><p>Elasticsearch führte in Version 7.8 zusammensetzbare Indexvorlagen ein. Zusammensetzbare Indexvorlagen ermöglichen Modularität und Versionierung von Vorlagen.</p></li><li><p>Die zusammensetzbaren Vorlagen bestehen aus keiner oder mehreren Komponentenvorlagen.</p></li><li><p>Eine Indexvorlage kann auch über eine eigene Konfiguration verfügen.</p></li><li><p>Eine Komponentenvorlage ist eine wiederverwendbare Vorlage mit vordefinierter Konfiguration, genau wie eine zusammensetzbare Indexvorlage.</p></li><li><p>Allerdings wird von Komponentenvorlagen erwartet, dass sie Teil einer Indexvorlage sind; sie sind nutzlos, wenn sie nicht in eine Indexvorlage „zusammengesetzt“ werden.</p></li><li><p>Komponentenvorlagen haben kein definiertes Indexmuster – was ein weiterer Grund dafür ist, dass sie „erwartet“ werden, Teil einer Indexvorlage zu sein.</p></li><li><p>Jede der Vorlagen hat eine Priorität – eine positive Zahl. Je höher die Zahl, desto höher ist die Priorität für die Anwendung dieser Vorlage.</p></li></ul>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/index-composable-templates</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/index-composable-templates</guid>
    <category><![CDATA[Index-Daten]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt98737a72caa74fe4/6a17f5b84b055d278d43236a/510750708df50bf79463586a1bbf35bf94acfa30-1200x628.png" length="0" type="image/png"/>
    <pubDate>Fri, 02 May 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Elasticsearch-Suche anhand zweier Felder]]></title>
    <description><![CDATA[Entdecken Sie Techniken zur Suche in zwei Feldern, darunter Multi-Match-Abfragen, Bool-Abfragen und Feld-Boosting zur Abfragezeit.]]></description>
    <content:encoded><![CDATA[<p>Die Suche über mehrere Felder hinweg in Elasticsearch ist in vielen Anwendungen eine gängige Anforderung. In diesem Artikel werden wir fortgeschrittene Techniken zur Durchführung von Suchen anhand zweier Felder untersuchen, darunter Mehrfachübereinstimmungsabfragen, Boolesche Abfragen und die Feld-Boosting-Methode zur Abfragezeit. Diese Techniken helfen Ihnen dabei, genauere und relevantere Suchergebnisse für Ihre Nutzer zu erstellen.</p><h2>Erweiterte Techniken zur Durchführung von Suchen in zwei Feldern</h2><h3>1. Mehrfachabfrage</h3><p>Eine Mehrfachabfrage ermöglicht es Ihnen, in mehreren Feldern nach einer einzelnen Suchzeichenfolge zu suchen. Dies ist nützlich, wenn Sie Dokumente finden möchten, die die angegebene Suchanfrage in einem der beiden Felder enthalten. Hier ist ein Beispiel für eine Mehrfachabfrage, die nach dem Begriff „Beispiel“ in den Feldern „Titel“ oder „Beschreibung“ sucht:</p>{
  "query": {
    "multi_match": {
      "query": "example",
      "fields": ["title", "description"]
    }
  }
}<h3>2. Bool-Abfrage</h3><p>Eine Bool-Abfrage ermöglicht es Ihnen, mehrere Abfragen mithilfe boolescher Logik zu kombinieren. Sie können die „should“-Klausel verwenden, um nach Dokumenten zu suchen, die der Suchanfrage in einem der beiden Felder entsprechen. Hier ist ein Beispiel für eine Boolesche Abfrage, die nach dem Begriff „Beispiel“ in den Feldern „Titel“ und „Beschreibung“ sucht:</p>{
  "query": {
    "bool": {
      "should": [
        {"match": {"title": "example"}},
        {"match": {"description": "example"}}
      ]
    }
  }
}<h3>3. Feld-Boosting zur Abfragezeit</h3><p>Manchmal möchten Sie bei der Suche einem Feld mehr Gewicht beimessen als einem anderen. Dies lässt sich erreichen, indem man dem Feld zur Abfragezeit einen Boost-Faktor zuweist. Ein höherer Boost-Wert gewichtet das Feld stärker, wodurch es mit größerer Wahrscheinlichkeit das endgültige Suchergebnis beeinflusst. Hier ist ein Beispiel für eine Mehrfachabfrage mit einem Boost-Faktor für das Feld „Titel“:</p>{
  "query": {
    "multi_match": {
      "query": "example",
      "fields": ["title^3", "description"]
    }
  }
}<p>In diesem Beispiel hat das Feld „Titel“ einen Boost-Faktor von 3, wodurch es bei der Bestimmung des Such-Scores dreimal wichtiger ist als das Feld „Beschreibung“.</p><h3>4. Kombinieren von Abfragen mit unterschiedlichen Gewichtungsfaktoren</h3><p>Sie können auch mehrere Abfragen mit unterschiedlichen Gewichtungsfaktoren mithilfe einer booleschen Abfrage kombinieren. Dies ermöglicht es Ihnen, die Wichtigkeit jedes Feldes in den Suchergebnissen feinabzustimmen. Hier ist ein Beispiel für eine Boolesche Abfrage mit unterschiedlichen Gewichtungsfaktoren für die Felder „Titel“ und „Beschreibung“:</p>{
  "query": {
    "bool": {
      "should": [
        {"match": {"title": {"query": "example", "boost": 3}}},
        {"match": {"description": {"query": "example", "boost": 1}}}
      ]
    }
  }
}<p>In diesem Beispiel hat das Feld „Titel“ einen Boost-Faktor von 3, während das Feld „Beschreibung“ einen Boost-Faktor von 1 hat.</p><h2>Fazit</h2><p>Die Suche anhand zweier Felder in Elasticsearch kann mithilfe fortgeschrittener Techniken wie Multi-Match-Abfragen, Booleschen Abfragen und Query-Time Field Boosting erreicht werden. Durch die Kombination dieser Techniken können Sie genauere und relevantere Suchergebnisse für Ihre Nutzer erstellen. Experimentieren Sie mit verschiedenen Abfragekombinationen und Gewichtungsfaktoren, um die optimale Suchkonfiguration für Ihren spezifischen Anwendungsfall zu finden.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-search-by-two-fields</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-search-by-two-fields</guid>
    <category><![CDATA[Grundlagen]]></category>
    <category><![CDATA[Query DSL]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltda47d75430c4fa7c/6a17f5cae3179149242d5963/d5d04bbcfc3925f48f3487ea4c7e0dd2205316d0-720x420.jpg" length="0" type="image/jpeg"/>
    <pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Elasticsearch-Heap-Speichernutzung und JVM-Garbage-Collection]]></title>
    <description><![CDATA[Untersuchung der Heap-Speichernutzung von Elasticsearch und der JVM-Garbage-Collection, einschließlich Best Practices und Lösungsansätzen für Probleme, wenn die Heap-Speichernutzung zu hoch ist oder die JVM-Leistung nicht optimal ist.]]></description>
    <content:encoded><![CDATA[<p>Die Heap-Größe ist die Menge an RAM, die der Java Virtual Machine eines Elasticsearch-Knotens zugewiesen wird.</p><p>Ab Version 7.11 passt Elasticsearch die JVM-Heap-Größe standardmäßig automatisch an die Rollen und den Gesamtspeicher eines Knotens an. Für die meisten Produktionsumgebungen wird die Verwendung der Standarddimensionierung empfohlen. Wenn Sie jedoch die Größe Ihres JVM-Heaps manuell festlegen möchten, sollten Sie in der Regel -Xms und -Xmx auf den gleichen Wert setzen, der 50 % Ihres gesamten verfügbaren RAMs betragen sollte, maximal jedoch (ungefähr) 31 GB.</p><p>Eine größere Heap-Größe stellt Ihrem Knoten mehr Speicher für Indizierungs- und Suchvorgänge zur Verfügung. Allerdings benötigt Ihr Knoten auch Speicher für das Caching, daher sorgt die Verwendung von 50 % für ein gesundes Gleichgewicht zwischen den beiden. Aus demselben Grund sollten Sie im Produktivbetrieb vermeiden, andere speicherintensive Prozesse auf demselben Knoten wie Elasticsearch auszuführen.</p><p>Typischerweise folgt die Haufennutzung einem Sägezahnmuster und schwankt zwischen etwa 30 und 70 % der maximal genutzten Haufengröße. Dies liegt daran, dass die JVM den Heap-Nutzungsprozentsatz stetig erhöht, bis der Garbage-Collection-Prozess wieder Speicher freigibt. Eine hohe Heap-Speicherbelegung tritt auf, wenn der Garbage-Collection-Prozess nicht hinterherkommt. Ein Indikator für eine hohe Heap-Speicherbelegung ist, wenn die Garbage Collection nicht in der Lage ist, die Heap-Speicherbelegung auf etwa 30 % zu reduzieren.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt03908d8eea824755/6a17dbe63e03d71e314f2b3e/0a17a67cc589a3c1fbf9e918eadc119df7bd7619-858x278.png" alt="" /><p>Im obigen Bild ist ein normales Sägezahnmuster des JVM-Heaps zu sehen.</p><p>Sie werden auch feststellen, dass es zwei Arten von Müllabfuhr gibt, die junge und die alte Müllabfuhr.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0d527a7905c78a45/6a17dbe84b055d09484320c2/8df5c24c4894404de4617be7a13683c9027d607d-875x281.png" alt="" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt681db7f60d9dbe40/6a17dbe97f6f152b9bc099f0/e01eb2537310b052580411153b8eddc187d97687-890x264.png" alt="" /><p>In einer gesunden JVM sollte die Speicherbereinigung idealerweise die folgenden Bedingungen erfüllen:</p><ul><li><p>Young GC wird schnell verarbeitet (innerhalb von 50 ms).</p></li><li><p>Young GC wird nicht häufig ausgeführt (etwa alle 10 Sekunden).</p></li><li><p>Der alte GC wird schnell verarbeitet (innerhalb von 1 Sekunde).</p></li><li><p>Die alte Garbage Collection wird nicht häufig ausgeführt (einmal alle 10 Minuten oder seltener).</p></li></ul><h3><strong>Wie lässt sich das Problem beheben, wenn die Heap-Speichernutzung zu hoch ist oder die JVM-Leistung nicht optimal ist?</strong></h3><p>Es kann verschiedene Gründe geben, warum die Heap-Speicherbelegung ansteigen kann:</p><h4><strong>Übersharding</strong></h4><p>Das Dokument zum Thema Oversharding finden Sie <a href="https://www.elastic.co/docs/deploy-manage/production-guidance/optimize-performance/size-shards#sizing-shard-guidelines">hier</a>.</p><h4><strong>Große Aggregationsgrößen</strong></h4><p>Um große Aggregationsgrößen zu vermeiden, halten Sie die Anzahl der Aggregations-Buckets (Größe) in Ihren Abfragen so gering wie möglich.</p>GET /_search
{
   "aggs" : {
       "products" : {
           "terms" : {
               "field" : "product",
               "size" : 5
                          }
       }
   }
}<p>Sie können die Protokollierung langsamer Abfragen (Slow Logs) verwenden und sie auf einem bestimmten Index mit den folgenden Mitteln implementieren.</p>PUT /my_index/_settings
{
   "index.search.slowlog.threshold.query.warn": "10s",
   "index.search.slowlog.threshold.query.info": "5s",
   "index.search.slowlog.threshold.query.debug": "2s",
   "index.search.slowlog.threshold.query.trace": "500ms",
   "index.search.slowlog.threshold.fetch.warn": "1s",
   "index.search.slowlog.threshold.fetch.info": "800ms",
   "index.search.slowlog.threshold.fetch.debug": "500ms",
   "index.search.slowlog.threshold.fetch.trace": "200ms",
   "index.search.slowlog.level": "info"
}<p>Anfragen, deren Beantwortung lange dauert, sind wahrscheinlich ressourcenintensiv.</p><h4><strong>Übermäßige Größe des Massenindex</strong></h4><p>Wenn Sie große Anfragen senden, kann dies zu einem hohen Heap-Verbrauch führen. Versuchen Sie, die Größe der Massenindexierungsanfragen zu reduzieren.</p><h4><strong>Kartierungsprobleme</strong></h4><p>Insbesondere wenn Sie „fielddata: true“ verwenden, kann dies einen erheblichen Teil Ihres JVM-Heaps beanspruchen.</p><h4><strong>Die Haufengröße wurde falsch eingestellt.</strong></h4><p>Die Heap-Größe kann manuell definiert werden durch:</p><p>Festlegen der Umgebungsvariablen:</p>ES_JAVA_OPTS="-Xms2g -Xmx2g"<p>Bearbeiten der Datei jvm.options in Ihrem Elasticsearch-Konfigurationsverzeichnis:</p>-Xms2g
-Xmx2g<p>Die Einstellung der Umgebungsvariablen hat Vorrang vor der Dateieinstellung.</p><p>Der Knoten muss neu gestartet werden, damit die Einstellung übernommen wird.</p><h4><strong>Das neue JVM-Verhältnis wurde falsch eingestellt</strong></h4><p>Im Allgemeinen ist es NICHT notwendig, dies festzulegen, da Elasticsearch diesen Wert standardmäßig setzt. Dieser Parameter definiert das Verhältnis des verfügbaren Speicherplatzes für Objekte der „neuen Generation“ und der „alten Generation“ in der JVM.</p><p>Wenn Sie feststellen, dass old GC sehr häufig vorkommt, können Sie versuchen, diesen Wert in der Datei jvm.options in Ihrem Elasticsearch-Konfigurationsverzeichnis explizit festzulegen.</p>-XX:NewRatio=3<h3><strong>Was sind die besten Vorgehensweisen für die Verwaltung der Heap-Speicherbelegung und der JVM-Garbage-Collection in einem großen Elasticsearch-Cluster?</strong></h3><p>Die besten Vorgehensweisen für die Verwaltung der Heap-Speicherbelegung und der JVM-Garbage-Collection in einem großen Elasticsearch-Cluster bestehen darin, sicherzustellen, dass die Heap-Größe auf maximal 50 % des verfügbaren RAMs eingestellt ist und dass die JVM-Garbage-Collection-Einstellungen für den jeweiligen Anwendungsfall optimiert sind. Es ist wichtig, die Heap-Größe und die Garbage-Collection-Metriken zu überwachen, um sicherzustellen, dass der Cluster optimal läuft. Insbesondere ist es wichtig, die JVM-Heap-Größe, die Garbage-Collection-Zeit und die Garbage-Collection-Pausen zu überwachen. Darüber hinaus ist es wichtig, die Anzahl der Müllabfuhrzyklen und die für die Müllabfuhr aufgewendete Zeit zu überwachen. Durch die Überwachung dieser Kennzahlen können potenzielle Probleme mit der Heap-Größe oder den Einstellungen für die Speicherbereinigung erkannt und gegebenenfalls Korrekturmaßnahmen ergriffen werden.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-heap-size-jvm-garbage-collection</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-heap-size-jvm-garbage-collection</guid>
    <category><![CDATA[Grundlagen]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <pubDate>Tue, 22 Apr 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Wie man die Anzahl der primären Shards in Elasticsearch erhöht]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie die Anzahl der primären Shards in Elasticsearch mithilfe der Split- und Reindex-APIs für ein optimales Shard-Skalieren erhöhen können.]]></description>
    <content:encoded><![CDATA[<p>Es ist nicht möglich, die Anzahl der primären Shards eines bestehenden Index zu erhöhen. Das bedeutet, dass ein Index neu erstellt werden muss, wenn Sie die Anzahl der primären Shards erhöhen möchten. In solchen Situationen werden üblicherweise zwei Methoden verwendet: die _reindex API und die _split API.</p><p>Die _split-API ist oft eine schnellere Methode als die _reindex-API. <strong>Die Indizierung</strong> <strong>muss vor beiden Operationen gestoppt werden</strong> , da sich sonst die Dokumentanzahlen in source_index und target_index unterscheiden.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt46dd6abe0e6fe1eb/6a17e368148009d6a7b486d3/aa0ae010c2f5691ca00440fb453ed6b47bacd24f-1200x628.png" alt="Erhöhung der Anzahl der Shards in Elasticsearch durch Neuerstellung eines Index" /><h2>Methode 1 – Verwendung der Split-API</h2><p>Die Split-API wird verwendet, um einen neuen Index mit der gewünschten Anzahl primärer Shards zu erstellen, indem die Einstellungen kopiert und ein vorhandener Index zugeordnet werden. Die gewünschte Anzahl primärer Shards kann bei der Erstellung festgelegt werden. Vor der Implementierung der Split-API sollten folgende Einstellungen überprüft werden:</p><ol><li><p>Der Quellindex muss schreibgeschützt sein. Dies bedeutet, dass der Indexierungsprozess gestoppt werden muss.</p></li><li><p>Die Anzahl der primären Shards im Zielindex muss ein Vielfaches der Anzahl der primären Shards im Quellindex sein. Wenn der Quellindex beispielsweise 5 primäre Shards hat, können die primären Shards des Zielindex auf 10, 15, 20 usw. festgelegt werden.</p></li></ol><p>Hinweis: Wenn nur die Nummer des primären Shards geändert werden muss, ist die Split-API vorzuziehen, da sie wesentlich schneller ist als die Reindex-API.</p><h3>Implementierung der Split-API</h3><p>Erstellen Sie einen Testindex:</p>POST test_split_source/_doc
{
  "test": "test"
}<p>Der Quellindex muss schreibgeschützt sein, um aufgeteilt werden zu können:</p>PUT test_split_source/_settings
{
  "index.blocks.write": true
}<p>Einstellungen und Zuordnungen werden automatisch aus dem Quellindex kopiert:</p>POST /test_split_source/_split/test_split_target
{
  "settings": {
    "index.number_of_shards": 3
  }
}<p>Den Fortschritt können Sie mit folgendem Link überprüfen:</p>GET _cat/recovery/test_split_target?v&amp;h=index,shard,time,stage,files_percent,files_total<p>Da Einstellungen und Zuordnungen aus den Quellindizes kopiert werden, ist der Zielindex schreibgeschützt. Aktivieren wir nun den Schreibvorgang für den Zielindex:</p>PUT test_split_target/_settings
{
    "index.blocks.write": null
}<p>Prüfen Sie die Anzahl der Dokumente (docs.count) im Quell- und Zielindex, bevor Sie den ursprünglichen Index löschen:</p>GET _cat/indices/test_split*?v&amp;h=index,pri,rep,docs.count<p>Indexname und Aliasname dürfen nicht identisch sein. Sie müssen den Quellindex löschen und den Namen des Quellindex als Alias zum Zielindex hinzufügen:</p>DELETE test_split_source
PUT /test_split_target/_alias/test_split_source<p>Nachdem Sie den Alias <strong>test_split_source</strong> zum Index <strong>test_split_target</strong> hinzugefügt haben, sollten Sie ihn wie folgt testen:</p>GET test_split_source
POST test_split_source/_doc
{
  "test": "test"
}<h2>Methode 2 – Verwendung der Reindex-API</h2><p>Durch die Erstellung eines neuen Index mit der Reindex-API kann eine beliebige Anzahl primärer Shards angegeben werden. Nach der Erstellung eines neuen Index mit der gewünschten Anzahl primärer Shards können alle Daten im Quellindex in diesen neuen Index neu indiziert werden.</p><p>Zusätzlich zu den Split-API-Funktionen können die Daten mithilfe der ingest_pipeline im Reindex-AP manipuliert werden. Bei der Ingest-Pipeline werden nur die angegebenen Felder, die dem Filter entsprechen, mithilfe der Abfrage in den Zielindex indiziert. Der Dateninhalt kann mithilfe eines einfachen Skripts geändert werden, und mehrere Indizes können zu einem einzigen Index zusammengeführt werden.</p><h3>Implementierung der Reindex-API</h3><p>Erstellen Sie einen Test-Reindex:</p>POST test_reindex_source/_doc
{
    "test": "test"
}<p>Kopieren Sie die Einstellungen und Zuordnungen aus dem Quellindex:</p>GET test_reindex_source<p>Erstellen Sie einen Zielindex mit Einstellungen, Zuordnungen und der gewünschten Shard-Anzahl:</p>PUT test_reindex_target
{
  "mappings" : {},
  "settings": {
    "number_of_shards": 10,
    "number_of_replicas": 0,
    "refresh_interval": -1
  }
}<p>*Hinweis: Die Einstellung number_of_replicas: 0 und refresh_interval: -1 erhöht die Geschwindigkeit der Neuindizierung.</p><p>Starten Sie den Reindexierungsprozess. Durch die Einstellung requests_per_second=-1 und slices=auto wird die Reindexierungsgeschwindigkeit angepasst.</p>POST _reindex?requests_per_second=-1&amp;slices=auto&amp;wait_for_completion=false
{
  "source": {
    "index": "test_reindex_source"
  },
  "dest": {
    "index": "test_reindex_target"
  }
}<p>Die task_id wird Ihnen beim Ausführen der Reindex-API angezeigt. Kopiere das und überprüfe es mit der _tasks-API:</p>GET _tasks/&lt;task_id&gt;<p>Aktualisieren Sie die Einstellungen, nachdem die Neuindizierung abgeschlossen ist:</p>PUT test_reindex_target/_settings
{
  "number_of_replicas": 1,
  "refresh_interval": "1s"
}<p>Prüfen Sie vor dem Löschen des ursprünglichen Index die Anzahl der Dokumente (docs.count) im Quell- und Zielindex; sie sollte identisch sein.</p>GET _cat/indices/test_reindex_*?v&amp;h=index,pri,rep,docs.count<p>Der Indexname und der Aliasname dürfen nicht identisch sein. Löschen Sie den Quellindex und fügen Sie den Namen des Quellindex als Alias zum Zielindex hinzu:</p>DELETE test_reindex_source
PUT /test_reindex_target/_alias/test_reindex_source<p>Nachdem Sie den Alias test_split_source zum Index test_split_target hinzugefügt haben, testen Sie ihn mit folgendem Befehl:</p>GET test_reindex_source<h2>Zusammenfassung</h2><p>Wenn Sie die Anzahl der primären Shards eines bestehenden Index erhöhen möchten, müssen Sie die Einstellungen und Zuordnungen für einen neuen Index neu erstellen. Hierfür gibt es zwei Hauptmethoden: die Reindex-API und die Split-API. Die aktive Indizierung muss vor Anwendung beider Methoden beendet werden.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-increase-primary-shard-count</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-increase-primary-shard-count</guid>
    <category><![CDATA[Grundlagen]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta8aa774fc00d7233/6a17e223dbb4ff68b3fb5611/7034b76019a0cba52c25eda29fceb18afc96ed0b-720x420.png" length="0" type="image/png"/>
    <pubDate>Thu, 17 Apr 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[So migrieren Sie Daten zwischen verschiedenen Versionen von Elasticsearch und zwischen Clustern]]></title>
    <description><![CDATA[Erkunden von Methoden zum Übertragen von Daten zwischen Elasticsearch-Versionen und -Clustern.]]></description>
    <content:encoded><![CDATA[<p>Wenn Sie einen Elasticsearch-Cluster aktualisieren möchten, ist es manchmal einfacher, einen neuen, separaten Cluster zu erstellen und Daten vom alten Cluster auf den neuen zu übertragen. Dies bietet den Benutzern den Vorteil, dass sie alle ihre Daten und Konfigurationen auf dem neuen Cluster mit allen ihren Anwendungen testen können, ohne dass das Risiko von Ausfallzeiten oder Datenverlust besteht.</p><p>Die Nachteile dieses Ansatzes bestehen darin, dass er eine gewisse Duplizierung der Hardware erfordert und bei dem Versuch, alle Daten reibungslos zu übertragen und zu synchronisieren, zu Schwierigkeiten führen kann.</p><p>Ein ähnliches Verfahren kann auch erforderlich sein, wenn Sie Anwendungen von einem Rechenzentrum in ein anderes migrieren müssen.</p><p>In diesem Artikel besprechen und beschreiben wir drei Möglichkeiten zur Datenübertragung zwischen Elasticsearch-Clustern.</p><p><strong>Wie migriere ich Daten zwischen Elasticsearch-Clustern?</strong></p><p>Es gibt drei Möglichkeiten, Daten zwischen Elasticsearch-Clustern zu übertragen:</p><ol><li><p><a href="https://www.elastic.co/de/search-labs/blog/elasticsearch-migrate-data-versions-clusters#1.-reindexing-data-from-a-remote-cluster">Neuindizierung von einem Remote-Cluster</a></p></li><li><p><a href="https://www.elastic.co/de/search-labs/blog/elasticsearch-migrate-data-versions-clusters#2.-transferring-data-using-snapshots">Übertragen von Daten mithilfe von Snapshots</a></p></li><li><p><a href="https://www.elastic.co/de/search-labs/blog/elasticsearch-migrate-data-versions-clusters#3.-transferring-data-using-logstash">Datenübertragung mit Logstash</a></p></li></ol><p>Die Verwendung von Snapshots ist normalerweise die schnellste und zuverlässigste Methode zur Datenübertragung. Bedenken Sie jedoch, dass Sie einen Snapshot nur auf einem Cluster mit gleicher oder höherer Version wiederherstellen können und niemals mit einem Unterschied von mehr als einer Hauptversion. Das bedeutet, dass Sie einen 6.x-Snapshot auf einem 7.x-Cluster wiederherstellen können, aber nicht auf einem 8.x-Cluster.</p><p>Wenn Sie um mehr als eine Hauptversion erhöhen müssen, müssen Sie neu indizieren oder Logstash verwenden.</p><p>Sehen wir uns nun jede der drei Optionen zum Übertragen von Daten zwischen Elasticsearch-Clustern im Detail an.</p><h2>1. Neuindizierung von Daten aus einem Remote-Cluster</h2><p>Bevor Sie mit der Neuindizierung beginnen, denken Sie daran, dass Sie für alle Indizes im neuen Cluster entsprechende Zuordnungen einrichten müssen. Dazu müssen Sie die Indizes entweder direkt mit den entsprechenden Zuordnungen erstellen oder Indexvorlagen verwenden.</p><h3>Neuindizierung von Remote – Konfiguration erforderlich</h3><p>Um eine Neuindizierung aus der Ferne durchzuführen, sollten Sie die folgende Konfiguration zur Datei elasticseearch.yml für den Cluster hinzufügen, der die Daten empfängt. In Linux-Systemen befindet sich diese Datei normalerweise hier: /etc/elasticsearch/elasticsearch.yml. Die hinzuzufügende Konfiguration lautet wie folgt:</p>reindex.remote.whitelist: "192.168.1.11:9200"<p>Wenn Sie SSL verwenden, sollten Sie jedem Knoten das CA-Zertifikat hinzufügen und Folgendes in den Befehl für jeden Knoten in elasticsearch.yml aufnehmen:</p>reindex.ssl.certificate_authorities: “/path/to/ca.pem”<p>Alternativ können Sie allen Elasticsearch-Knoten die folgende Zeile hinzufügen, um die SSL-Verifizierung zu deaktivieren. Dieser Ansatz ist jedoch weniger empfehlenswert, da er nicht so sicher ist wie die vorherige Option:</p>reindex.remote.whitelist: "192.168.1.11:9200"
reindex.ssl.verification_mode: none
systemctl restart elasticsearch service <p>Sie müssen diese Änderungen auf jedem Knoten vornehmen und einen rollierenden Neustart durchführen. Weitere Informationen hierzu finden Sie in <a href="https://www.elastic.co/de/guide/en/elasticsearch/reference/8.17/restart-cluster.html#restart-cluster-rolling">unserem Handbuch</a>.</p><h3>Befehl zur Neuindizierung</h3><p>Nachdem Sie den Remote-Host in der Datei elasticsearch.yml definiert und ggf. die SSL-Zertifikate hinzugefügt haben, können Sie mit dem folgenden Befehl mit der Neuindizierung der Daten beginnen:</p>POST _reindex
{
  "source": {
    "remote": {
      "host": "http://192.168.1.11:9200",
      "username": "elastic",
      "password": "123456",
     "socket_timeout": "1m",
      "connect_timeout": "1m"

    },
    "index": "companydatabase"
  },
  "dest": {
    "index": "my-new-index-000001"
  }
}<p>Dabei können Timeout-Fehler auftreten. Daher kann es sinnvoll sein, großzügige Werte für Timeouts festzulegen, anstatt sich auf Standardwerte zu verlassen.</p><p>Sehen wir uns nun einige andere häufige Fehler an, die bei der Neuindizierung aus der Ferne auftreten können.</p><h3>Häufige Fehler bei der Neuindizierung von Remote</h3><h4>1. Neuindizierung nicht auf der Whitelist</h4>{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "[192.168.1.11:9200] not whitelisted in reindex.remote.whitelist"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "[192.168.1.11:9200] not whitelisted in reindex.remote.whitelist"
  },
  "status": 400
}<p>Wenn dieser Fehler auftritt, bedeutet dies, dass Sie die IP-Adresse des Remote-Hosts oder den DNS-Knotennamen in Elasticsearch nicht wie oben beschrieben definiert haben oder vergessen haben, die Elasticsearch-Dienste neu zu starten.</p><p>Um dies für den Elasticsearch-Cluster zu beheben, müssen Sie den Remote-Host zu allen Elasticsearch-Knoten hinzufügen und die Elasticsearch-Dienste neu starten.</p><h4>2. SSL-Handshake-Ausnahme</h4>{
  "error": {
    "root_cause": [
      {
        "type": "s_s_l_handshake_exception",
        "reason": "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
      }
    ],
    "type": "s_s_l_handshake_exception",
    "reason": "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target",
    "caused_by": {
      "type": "validator_exception",
      "reason": "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target",
      "caused_by": {
        "type": "sun_cert_path_builder_exception",
        "reason": "unable to find valid certification path to requested target"
      }
    }
  },
  "status": 500
}<p>Dieser Fehler bedeutet, dass Sie vergessen haben, reindex.ssl.certificate_authorities wie oben beschrieben zu elasticsearch.yml hinzuzufügen. So fügen Sie es hinzu:</p>#elasticsearch.yml
reindex.ssl.certificate_authorities: "/path/to/ca.pem"<h2>2. Daten mit Snapshots übertragen</h2><p>Denken Sie daran, dass Sie, wie oben erwähnt, einen Snapshot nur auf einem Cluster einer gleichen oder höheren Version wiederherstellen können und niemals mit einem Unterschied von mehr als einer Hauptversion</p><p>Wenn Sie um mehr als eine Hauptversion erhöhen müssen, müssen Sie neu indizieren oder Logstash verwenden.</p><p>Für die Datenübertragung per Snapshot sind folgende Schritte erforderlich:</p><p>Schritt 1. Hinzufügen des Repository-Plugins zum ersten Elasticsearch-Cluster – Um Daten über Snapshots zwischen Clustern zu übertragen, müssen Sie sicherstellen, dass sowohl vom neuen als auch vom alten Cluster auf das Repository zugegriffen werden kann. Cloud-Speicher-Repositories wie AWS, Google und Azure sind hierfür grundsätzlich ideal. Um Schnappschüsse zu machen, lesen Sie bitte <a href="https://www.elastic.co/de/guide/en/elasticsearch/reference/current/snapshot-restore.html">unsere Anleitung</a> und befolgen Sie die darin beschriebenen Schritte.</p><p>Schritt 2. Starten Sie den Elasticsearch-Dienst neu (Rolling Restart).</p><p>Schritt 3. Erstellen Sie ein Repository für den ersten Elasticsearch-Cluster.</p><p>Schritt 4: Fügen Sie das Repository-Plugin zum zweiten Elasticsearch-Cluster hinzu.</p><p>Schritt 5 – Repository als schreibgeschützt zum zweiten Elasticsearch-Cluster hinzufügen – Sie müssen ein Repository hinzufügen, indem Sie dieselben Schritte wiederholen, die Sie zum Erstellen des ersten Elasticsearch-Clusters ausgeführt haben.</p><p>Wichtiger Hinweis: Wenn Sie den zweiten Elasticsearch-Cluster mit demselben AWS S3-Repository verbinden, sollten Sie das Repository als schreibgeschütztes Repository definieren:</p>PUT _snapshot/my_s3_repository
{
  "type": "s3",
  "settings": {
    "bucket": "my-analytic-data",
    "endpoint": "s3.eu-de.cloud-object-storage.appdomain.cloud",
    "readonly": "true"
  }
}<p>Dies ist wichtig, da Sie das Risiko einer Vermischung von Elasticsearch-Versionen im selben Snapshot-Repository vermeiden möchten.</p><p>Schritt 6 – Wiederherstellen der Daten im zweiten Elasticsearch-Cluster – Nachdem Sie die oben genannten Schritte ausgeführt haben, können Sie die Daten wiederherstellen und in den neuen Cluster übertragen. Befolgen Sie die in <a href="https://www.elastic.co/de/guide/en/elasticsearch/reference/current/snapshot-restore.html">diesem Artikel</a> beschriebenen Schritte, um Daten im neuen Cluster wiederherzustellen. </p><h2>3. Datenübertragung mit Logstash</h2><p>Bevor Sie mit der Datenübertragung mit Logstash beginnen, denken Sie daran, dass Sie für alle Indizes im neuen Cluster entsprechende Zuordnungen einrichten müssen. Dazu müssen Sie die Indizes entweder direkt erstellen oder Indexvorlagen verwenden.</p><p>Um Daten zwischen zwei Elasticsearch-Clustern zu übertragen, können Sie einen temporären Logstash-Server einrichten und ihn zum Übertragen Ihrer Daten zwischen zwei Clustern verwenden. Für kleine Cluster sollte eine Instanz mit 2 GB RAM ausreichen. Für größere Cluster können Sie Vierkern-CPUs mit 8 GB RAM verwenden.</p><p>Eine Anleitung zur Installation von Logstash <a href="https://www.elastic.co/de/guide/en/logstash/current/installing-logstash.html">finden Sie hier</a>.</p><h3>Logstash-Konfiguration zum Übertragen von Daten von einem Cluster zu einem anderen</h3><p>Eine grundlegende Konfiguration zum Kopieren eines einzelnen Indexes von Cluster A nach Cluster B ist:</p>iinput
{
elasticsearch
      {
        hosts =&gt; ["192.168.1.11:9200"]
        index =&gt; "index_name"
       docinfo =&gt; true      
      }
}

output 
{
  elasticsearch {
        hosts =&gt; "https://192.168.1.12:9200"
        index =&gt; "index_name"
        
  }
}<p>Für eine sichere Elasticsearch können Sie die folgende Konfiguration verwenden:</p>input
{
  elasticsearch
      {
        hosts =&gt; ["192.168.1.11:9200"]
        index =&gt; "index_name"
        docinfo =&gt; true 
        user =&gt; "elastic"
        password =&gt; "elastic_password"
        ssl =&gt; true
        ssl_certificate_verification =&gt; false
            
      }
}

output 
{
  elasticsearch {
        hosts =&gt; "https://192.168.1.12:9200"
        index =&gt; "index_name"
        user =&gt; "elastic"
        password =&gt; "elastic_password"
        ssl =&gt; true
        ssl_certificate_verification =&gt; false
  }
}<h3>Index-Metadaten</h3><p>Die obigen Befehle schreiben in einen einzelnen benannten Index. Wenn Sie mehrere Indizes übertragen und die Indexnamen beibehalten möchten, müssen Sie der Logstash-Ausgabe die folgende Zeile hinzufügen:</p>index =&gt; "%{[@metadata][_index]}"<p>Wenn Sie die ursprüngliche ID des Dokuments beibehalten möchten, müssen Sie außerdem Folgendes hinzufügen:</p>document_id =&gt; "%{[@metadata][_id]}"<p>Bedenken Sie, dass die Datenübertragung durch das Festlegen der Dokument-ID erheblich langsamer wird. Behalten Sie die Original-ID daher nur bei, wenn es unbedingt erforderlich ist.</p><h2>Synchronisierung von Updates</h2><p>Alle oben beschriebenen Methoden dauern relativ lange und Sie stellen möglicherweise fest, dass Daten im ursprünglichen Cluster aktualisiert wurden, während Sie auf den Abschluss des Vorgangs gewartet haben.</p><p>Es gibt verschiedene Strategien, um die Synchronisierung aller Aktualisierungen zu ermöglichen, die während des Datenübertragungsprozesses aufgetreten sind. Sie sollten sich vor dem Starten dieses Prozesses einige Gedanken über diese Probleme machen. Insbesondere müssen Sie über Folgendes nachdenken:</p><ul><li><p>Über welche Methode können Sie Daten identifizieren, die seit Beginn des Datenübertragungsprozesses aktualisiert/hinzugefügt wurden (z. B. ein Feld „last_update_time“ in den Daten)?</p></li><li><p>Mit welcher Methode können Sie die letzten Daten übertragen?</p></li><li><p>Besteht die Gefahr, dass Datensätze dupliziert werden? Normalerweise ist dies der Fall, es sei denn, die von Ihnen verwendete Methode setzt die Dokument-ID während der Neuindizierung auf einen bekannten Wert.</p></li></ul><p>Nachfolgend werden die verschiedenen Methoden zum Aktivieren der Synchronisierung von Updates beschrieben.</p><h3>1. Einsatz von Warteschlangensystemen</h3><p>Einige Aufnahme-/Aktualisierungssysteme verwenden Warteschlangen, die es Ihnen ermöglichen, in den letzten x Tagen empfangene Datenänderungen „wiederzugeben“. Dies kann eine Möglichkeit bieten, alle durchgeführten Änderungen zu synchronisieren. </p><h3>2. Neuindizierung von Remote</h3><p>Wiederholen Sie den Neuindizierungsprozess für alle Elemente, bei denen „last_update_time“ &gt; x Tage her ist. Sie können dies tun, indem Sie der Neuindizierungsanforderung einen „Abfrage“-Parameter hinzufügen.</p><h3>3. Logstash</h3><p>In der Logstash-Eingabe können Sie eine Abfrage hinzufügen, um alle Elemente zu filtern, bei denen „last_update_time“ &gt; x Tage her ist. Dieser Vorgang führt jedoch zu Duplikaten in Nicht-Zeitreihendaten, sofern Sie die Dokument-ID nicht festgelegt haben.</p><h3>4. Schnappschüsse</h3><p>Es ist nicht möglich, nur einen Teil eines Index wiederherzustellen. Sie müssten daher eine der anderen oben beschriebenen Datenübertragungsmethoden (oder ein Skript) verwenden, um alle Änderungen zu aktualisieren, die seit der Durchführung des Datenübertragungsprozesses stattgefunden haben.</p><p>Allerdings ist die Wiederherstellung von Snapshots ein viel schnellerer Prozess als die Neuindizierung/Logstash. Daher ist es möglicherweise möglich, Aktualisierungen für einen kurzen Zeitraum auszusetzen, während Snapshots übertragen werden, um das Problem insgesamt zu vermeiden.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-migrate-data-versions-clusters</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-migrate-data-versions-clusters</guid>
    <category><![CDATA[Grundlagen]]></category>
    <dc:creator><![CDATA[Kofi Bartlett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfc041ebca11476c6/6a16f70560084b31b93c4344/01fde3b1d714f12bf8673140c9f2f940d443de31-1440x823.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>