Eine der grundlegenden, aber sehr nützlichen Funktionen von Elasticsearch: Aliase

0, Beschriftung

Dieser Artikel ist der erste in einer Reihe. Stellen Sie einige sehr grundlegende, aber sehr nützliche technische Punkte von Elasticsearch vor. Das Verständnis dieser technischen Punkte hilft Ihnen dabei, einen besser wartbaren Datenindex zu entwerfen, die Gruben im tatsächlichen Kampf gegen den Big-Data-Index auf PB-Ebene im Voraus zu kennen und die Arbeitseffizienz zu verbessern.

Dieser Artikel bietet eine detaillierte Interpretation unter fünf Gesichtspunkten: Alias-Klassifizierung, Index-Alias-Praxis, Vorteile von Index-Alias, häufige Probleme und Pit-Interpretation von Index-Alias ​​und Feld-Alias-Praxis.

1. Alias-Klassifizierung

In Elasticsearch gibt es zwei Kategorien von Aliasen.

1.1 Indexalias

Offizielle Interpretation: Index-Aliase können auf einen oder mehrere Indizes verweisen und in jeder API verwendet werden, für die Indexnamen erforderlich sind. Aliase bieten uns große Flexibilität. Sie erlauben uns Folgendes:

1) Wechseln Sie transparent zwischen einem Index und einem anderen Index im laufenden Cluster.

2) Gruppieren und kombinieren Sie mehrere Indizes (z. B. der Indexalias der letzten drei Monate: ist die Kombination aus logstash201903, logstash201904, logstash_201905 in den letzten 3 Monaten);

3) Erstellen Sie "Ansichten" für die Teilmenge der Dokumente im Index (in Kombination mit Geschäftsszenarien wird die Abrufeffizienz verbessert).

Beliebte Erklärung: Index-Aliase sind ähnlich: Windows-Verknüpfungen, Linux-Softlinks, MySQL-Ansichten.

  • Voraussetzung: Nachdem Elasitcsearch einen Index erstellt hat, kann der Indexname nicht mehr geändert werden. In vielen Geschäftsszenarien erfüllt ein einzelner Index möglicherweise nicht die Anforderungen.

  • Szenario 1: Inkrementelle Daten auf PB-Ebene, die mithilfe der Rollover-API implementiert werden, bestehen aus n datumsbasierten Indizes. Offensichtlich ist es zweckmäßig, Aliase für externe Dienste zu verwenden.

  • Szenario 2: Stellen Sie sich vor, dass ein Problem mit einem Index von Onlinediensten vorliegt. Beispielsweise ist die Definition eines bestimmten Felds nicht korrekt. So stellen Sie sicher, dass der externe Dienst nicht gestoppt wird (ohne den Geschäftscode zu ändern) und ersetzen den Index. Offensichtlich ist der Alias ​​besser geeignet .

Hinweis: Die Verwendung von Aliasen in tatsächlichen Geschäftsszenarien ist sehr bequem, flexibel, schnell und lose gekoppelt! !

1.2 Feldalias

Der Feldtyp ist nur in Version 6.4+ verfügbar, die von Elasticsearch Mapping definiert wurde.

Beliebte Erklärung:

Stellen Sie sich ein Geschäftsszenario vor. Zum Beispiel in der tatsächlichen Geschäftsentwicklung: Facebook und Twitter müssen gesammelt werden, und die Sammlung und Speicherung sind zwei Geschäftsteams.

Sie verwendeten zwei Felder für den Inhalt. Einer von ihnen ist zufrieden. Der andere ist cont. Zu diesem Zeitpunkt werden zwei Felder in elasticsearch gespeichert.

Wenn wir also Geschäftscode suchen und schreiben, sollten wir zwei verschiedene Felder für die Verarbeitung schreiben? Wenn es möglich ist, ein Feld zu schreiben, vermeidet der Code eine Geschäftskopplung, was sehr praktisch ist.

Ich denke, dies ist der Ursprung von Feldaliasnamen.

2. Index-Alias-Praxis

2.1 Angenommen, es gibt keinen Alias, wie wird mit dem Abrufen mehrerer Indizes umgegangen?

  • Methode 1: Durch Kommas getrennte Suche mit mehreren Indizes.
POST visitor_logs_2017,visitor_logs_2018/_search
  • Methode 2: Platzhalterindex-Suche.
POST visitor_logs_*/_search

2.2 Mit dem Alias ​​wird die Bedienung einfach

Im tatsächlichen Kampf müssen wir den tatsächlichen Indexnamen der Operation nicht kennen. Wir können den Index, auf den der Alias ​​verweist, transparent ändern, ohne die Benutzer zu beeinflussen, die den Alias ​​verwenden.

  • Schritt 1: Der Alias ​​ist dem vorhandenen Index zugeordnet.
POST /_aliases?pretty
{
  "actions": [
    {
      "add": {
        "index": "visitor_logs_2017",
        "alias": "visitor_logs"
      }
    },
    {
      "add": {
        "index": "visitor_logs_2018",
        "alias": "visitor_logs"
      }
    }
  ]
}
  • Schritt 2: Verwenden Sie die Aliasuche
GET /visitor_logs/_search

3. Die Vorteile von Index-Aliasen

3.1 Verwaltung großer Datenmengen

Szenario: Im tatsächlichen Kampf kann eine zeitbasierte Datenaufbewahrungsstrategie (implementiert mithilfe des Rollover-Mechanismus) erforderlich sein, und alte Daten können aus dem System gelöscht werden. Verwenden Sie Index-Aliase:

  • Vorteil 1: Vereinfachung des Löschvorgangs von Daten aus Elasticsearch.

  • Vorteil 2: Löschen Sie die ältesten Daten aus Elasticsearch ohne Ausfallzeiten, ohne Unterbrechung der Abfrage und ohne Clientänderungen.

Der auf dem Zeitindex basierende Implementierungsmechanismus lautet wie folgt:
Eine der grundlegenden, aber sehr nützlichen Funktionen von Elasticsearch: Aliase
Empfohlene Lektüre:

Denken Sie nur einmal darüber nach: Wenn Sie einen großen Index anstelle eines zeitbasierten Index verwenden, was passiert, wenn Sie historische Daten löschen?

Antworten:

  • 1. Indexdaten löschen kann nur verwendet werden: deletebyquery löscht im Vergleich zum Löschen von Indizes deletebyquery Daten nur logisch;

  • 2. Das tatsächliche Löschen ist tatsächlich das physische Löschen des Segments nach dem Zusammenführen des Segments, dh nach dem Löschen durch Abfrage verringert sich der Speicherplatz nicht, sondern nimmt für einen bestimmten Zeitraum zu. Die Abrufeffizienz ist zu diesem Zeitpunkt sehr gering.

3.2 Index ohne Benutzerwahrnehmung neu erstellen

Im tatsächlichen Kampf ist das Indexdesign möglicherweise nicht in einem Schritt vorhanden. Wenn das Geschäft expandiert, kann die Indexzuordnungsstruktur in der mittleren und späten Entwicklungsphase angepasst werden, z.

  • 1) Ändern Sie iksmart in ikmax_word Wortsegmentierung für eine effiziente Wortsegmentierung.

  • 2) Ändern Sie den langen Typ in Schlüsselwort, um die Abrufeffizienz zu verbessern.

  • 3) Ändern Sie die Anzahl der Indexfragmente, um die horizontale Maschinenerweiterung zu erleichtern.

  • 4) Der Index ist zur Verbesserung der Leistung in kleinere Indizes unterteilt.

Die übliche Vorgehensweise erfordert die Hilfe von: Neuindizierung, um die Indexmigration abzuschließen. Wenn Sie den zuverlässigen Betrieb der Online-Umgebung und die Unwissenheit des Benutzers sicherstellen möchten (das heißt, Sie müssen den Benutzer nicht informieren und das Geschäft des Benutzers ist nicht betroffen), ist die Verwendung eines Alias, der vor und nach der Änderung auf den Index verweist, eine hervorragende Lösung.

Praktische Beispiele:

POST /_aliases?pretty
{
  "actions": [
    {
      "remove": {
        "index": "visitor_logs_2018",
        "alias": "visitor_logs"
      }
    },
    {
      "add": {
        "index": "visitor_logs_2018_01",
        "alias": "visitor_logs"
      }
    }
  ]
}

Stellen Sie sich vor, was ist, wenn es keinen Indexalias gibt?

Antworten:

  • 1. Die Kontinuität der Abfrage kann nicht garantiert werden.

  • 2. Die Zuverlässigkeit der Online-Geschäftsabfrage kann nicht garantiert werden (Benutzer müssen benachrichtigt werden, dass das Geschäft für einen bestimmten Zeitraum unterbrochen wird).

4. Häufige Probleme und Interpretation von Index-Aliasen

Frage 1: Kann ES Bulk Insert Alias ​​Insert verwenden?

Wird einen Fehler melden:

Für Alias ​​[xxx] ist kein Schreibindex definiert ....

Hinweis: Index-Aliase sind nicht universell. Beim Schreiben oder Aktualisieren von Daten müssen Sie den physischen Index angeben und dürfen keine Daten in den Alias ​​schreiben.

Frage 2: Wie erhält ES alle Alias-Informationsalias?

Oder Frage: Wie finde ich den tatsächlichen Indexnamen anhand des Indexalias?

GET _cat/aliases

zurückgegebene Nachrichten:

visitor_logs visitor_logs_2017 - - -
.kibana      .kibana_1         - - -
visitor_logs visitor_logs_2018 - - 
`

Frage 3: Entspricht die Verwendung von Aliasen der indexbasierten Effizienz?

Ist konsistent.

Voraussetzung: Der Index und der Alias ​​verweisen auf dieselben Daten und dieselben Suchbedingungen.

Prinzip: Der Indexalias ist nur der Name des Softlinks des physischen Index.

Frage 4: Wie können Aliase verwendet werden, um die Abrufeffizienz zu verbessern?

  • Methode 1: Erstellen Sie einen Index basierend auf der Zeit und geben Sie mehrere Index-Aliase an. Zum Beispiel ist es unterteilt in: Index-Aliase in den letzten 1 Jahren, Index-Aliase in den letzten 3 Monaten, Index-Aliase in den letzten 1 Monat, Index-Aliase in der letzten 1 Woche und Index-Aliase in den letzten 3 Tagen. Bestimmen Sie bei der Suche zuerst den Zeitbereich und suchen Sie dann unter dem Alias ​​des angegebenen Bereichs.

Kernprinzip: Die zeitliche physikalische Trennung in Verbindung mit einem Mechanismus zur Trennung heißer und kalter Daten reduziert die Suchprobe erheblich.

  • Methode 2: Verwenden Sie Filteralias oder Routing-Alias-Mechanismus, um die Effizienz zu verbessern. Der Code für Filter-Alias ​​wird im tatsächlichen Geschäft leicht übersehen, verbessert jedoch die Effizienz erheblich.
POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test1",
                 "alias" : "alias2",
                 "filter" : { "term" : { "user" : "kimchy" } }
            }
        }
    ]
}

Der Routing-Mechanismus kann sich auf das offizielle Dokument beziehen.

5. Übungsfeld-Aliase

Frage der Starfreunde:

"Aliasdatatype, wie sieht das Verwendungsszenario dieses Datentyps in der realen Arbeit aus? Sehen Sie sich das offizielle Dokument an und verstehen Sie es nicht gut?"

Der erste Teil des Feldaliasprinzips wurde ausführlich erläutert und wird nicht wiederholt. Übe hier, um dein Verständnis zu vertiefen.

PUT trips
{
  "mappings": {
    "_doc": {
      "properties": {
        "distance": {
          "type": "long"
        },
        "route_length_miles": {
          "type": "alias",
          "path": "distance"
        },
        "transit_mode": {
          "type": "keyword"
        }
      }
    }
  }
}

Hinweis: Wenn Benutzer die Suche verwenden, können sie das Feld "Routenlängenmeile" anstelle der Entfernung verwenden, um den gleichen Effekt wie die Entfernung zu erzielen.

6. Zusammenfassung

  • Im tatsächlichen Kampf wird die Schönheit von Index-Aliasen im Allgemeinen im mittleren und späten Entwicklungsstadium entdeckt. Wie im Artikel analysiert: 1. Effizientes Indexmanagement; 2. Benutzer nehmen keine Änderung und Aktualisierung der Wartungsdaten wahr.

  • Vorschlag: Physische Indizes mit demselben Indexalias weisen eine konsistente Zuordnung und Datenstruktur auf, um die Abrufeffizienz zu verbessern.

  • Hinweis: Um Index-Aliase beim Abrufen nutzen zu können, müssen beim Schreiben und Aktualisieren physische Indizes verwendet werden.

Was sind in Ihrem aktuellen Elasticsearch-Geschäftsszenario die grundlegenden, aber nützlichen technischen Punkte für die tatsächliche Entwicklung? Willkommen, um eine Nachricht zu hinterlassen und Ihre Gedanken zu hinterlassen, lassen Sie uns hart zusammenarbeiten!

Referenz:

https://cambium.consulting/articles/2018/2/22/our-favorite-elasticsearch-features-part-2-index-aliases

Literatur-Empfehlungen:

Heavy | Elasticsearch7.X Lern-Roadmap

Elasticsearch 7.0 ist offiziell veröffentlicht, lass ihn gehen!

Trockenwaren | Elasticsearch 7.1 kostenlose Sicherheitsfunktionen Panorama-Bewusstsein

Eine der grundlegenden, aber sehr nützlichen Funktionen von Elasticsearch: Aliase

Treten Sie dem Planeten bei und lernen Sie mehr Trockenware in kürzerer Zeit und schneller!

Ich denke du magst

Origin blog.51cto.com/15050720/2562063
Empfohlen
Rangfolge