Entdecken Sie die Anwendung und das Prinzip des Abrufs von Elasticsearch 8.X-Begriffssätzen

1. Einführung in die Begriffssatzsuche

Die Begriffssatzabfrage ist ein leistungsstarker Abfragetyp in Elasticsearch, der hauptsächlich für den Dokumentabgleich in mehrwertigen Feldern verwendet wird.

Im Kern werden Dokumente abgerufen, die mit mindestens einer bestimmten Anzahl eines bestimmten Begriffs übereinstimmen, wobei die Anzahl der Übereinstimmungen ein fester Wert oder ein dynamischer Wert basierend auf einem anderen Feld sein kann. Dieser Abfragestil ist nützlich, wenn es um komplexe Daten mit mehreren Attributen, Kategorien oder Beschriftungen geht.

2. Begriffe legen den Hintergrund der Abrufgenerierung fest

Die Abfrage von Begriffssätzen ist eine neue Funktion, die in der Elasticsearch-Version 6.1 eingeführt wurde. Vor Version 6.1 stellte Elasticsearch eine Vielzahl von Abfragetypen bereit, aber beim Umgang mit mehrwertigen Feldern müssen Benutzer möglicherweise komplexere Abfragen schreiben oder Skripte verwenden, um bestimmte Übereinstimmungsbedingungen zu erreichen.

Der Hauptzweck der Einführung der Termset-Abfrage besteht darin, die Abfrageverarbeitung in solchen Szenarien zu vereinfachen. Mithilfe der Abfrage „Begriffssätze“ können Benutzer problemlos Dokumente finden, die mindestens einer bestimmten Anzahl bestimmter Begriffe entsprechen, und gleichzeitig die dynamische Berechnung der Anzahl der Übereinstimmungen basierend auf anderen Feldern oder Skripten unterstützen. Dieser Abfragestil ist nützlich, wenn es um komplexe Daten mit mehreren Attributen, Kategorien oder Beschriftungen geht.

3. Anwendungsszenarien für den Begriff „Set Retrieval“.

Begriffssatzabfragen sind nützlich, wenn es um mehrwertige Felder und bestimmte Übereinstimmungsbedingungen geht.

Hier sind einige häufige Anwendungsszenarien:

Etikettiersystem

In Anwendungen mit einem Tagging-System, wie Blogs, sozialen Medien oder Nachrichtenseiten, können Benutzer Inhalten wie Artikeln, Beiträgen oder Produkten mehrere Tags zuweisen. Mit einer Begriffssatzabfrage können Sie Inhalte finden, die mindestens eine bestimmte Anzahl eines bestimmten Tags enthalten. Dies ist sehr nützlich für Filter- und Empfehlungsfunktionen.

Suchmaschine

In einer Suchmaschine kann ein Benutzer mehrere Schlüsselwörter eingeben, um relevante Inhalte zu finden. Mithilfe der Abfrage „Begriffssätze“ können die Ergebnisse danach sortiert werden, wie genau Dokumente mit einem bestimmten Schlüsselwort übereinstimmen. Beispielsweise können Dokumente gefunden werden, die mindestens der Hälfte der vom Benutzer eingegebenen Schlüsselwörter entsprechen.

E-Commerce

In einer E-Commerce-Anwendung kann ein Produkt mehrere Attribute wie Farbe, Größe oder Marke haben. Mithilfe der Abfrage „Begriffssätze“ können Sie Produkte finden, die mehrere Attributbedingungen gleichzeitig erfüllen. Beispielsweise ist es möglich, Produkte mit mindestens 2 angegebenen Farben und 3 angegebenen Größen zu finden.

Dokumenten-Management-System

In einem Dokumentenverwaltungssystem können Dokumente mehrere Kategorien oder Tags haben. Mit der Abfrage „Begriffssätze“ können Sie Dokumente basierend auf ihrer Klassifizierung oder Beschriftungsübereinstimmung filtern. Beispielsweise ist es möglich, Dokumente zu finden, die mindestens einer bestimmten Anzahl vorgegebener Klassifizierungen oder Tags entsprechen.

Geschicklichkeitsspiel

Bei einer Einstellungs- oder Stellenbewerbung kann ein Kandidat über mehrere Fähigkeiten verfügen. Mithilfe einer Termset-Abfrage ist es möglich, Kandidaten mit mindestens einer bestimmten Anzahl vorgegebener Fähigkeiten zu finden. Dies ist sehr nützlich, um geeignete Kandidaten zu prüfen und zu empfehlen. Zusammenfassend lässt sich sagen, dass Termset-Abfragen sehr nützlich sind, wenn es um komplexe Daten mit mehreren Attributen, Kategorien oder Beschriftungen geht. Durch die flexible Einstellung passender Mengenkonditionen können Dokumente, die spezifische Anforderungen erfüllen, leicht gefunden werden.

4. So funktioniert der Abruf des Begriffssatzes

Die grundlegende Syntax für eine Begriffssatzabfrage lautet wie folgt:

{
  "query": {
    "terms_set": {
      "<字段名>": {
        "terms": ["<词项1>", "<词项2>", ...],
        "minimum_should_match_field": "<匹配数量字段名>",
        "minimum_should_match_script": {
          "source": "<脚本>"
        }
      }
    }
  }
}

Das Funktionsprinzip der Termset-Abfrage lässt sich in die folgenden Schritte unterteilen:

  • Gibt den Namen des abzufragenden Felds an, bei dem es sich normalerweise um ein mehrwertiges Feld handelt, z. B. ein Array oder eine Sammlung.

  • Stellt eine Reihe von Begriffen bereit, mit denen im angegebenen Feld abgeglichen werden soll.

  • Es gibt zwei Möglichkeiten, die Bedingung für die übereinstimmende Menge festzulegen (beide können nicht kombiniert werden, es kann nur eine davon ausgewählt werden):

    • Geben Sie über den Parameter „minimum_should_match_field“ den Namen eines Feldes an, das die Anzahl der Übereinstimmungen enthält.

    • Verwenden Sie den Parameter „minimum_should_match_script“, um ein Skript bereitzustellen, das die Anzahl der Übereinstimmungen dynamisch berechnet.

  • Elasticsearch ruft Dokumente ab, die der angegebenen Anzahl von Begriffen entsprechen, und gibt sie als Abfrageergebnisse zurück.

5. Anwendungsbeispiel für die Suche nach Begriffen

Angenommen, wir haben eine Datenbank mit Filmen und jeder Film hat mehrere Tags. Jetzt wollen wir Filme finden, die gleichzeitig eine bestimmte Anzahl vorgegebener Tags haben.

Hier ist eine Beispielabfrage mit dem Begriffssatz:

5.1 Datenaufbereitung

Erstellen Sie zunächst einen Index namens „Filme“:

PUT movies
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "tags": {
        "type": "keyword"
      },
      "tags_count": {
        "type": "integer"
      }
    }
  }
}

Fügen Sie dann einige Filmdaten zum Index hinzu:

POST /movies/_bulk
{"index":{"_id":1}}
{"title":"电影1","tags":["喜剧","动作","科幻"],"tags_count":3}
{"index":{"_id":2}}
{"title":"电影2","tags":["喜剧","爱情","家庭"],"tags_count":3}
{"index":{"_id":3}}
{"title":"电影3","tags":["动作","科幻","喜剧"],"tags_count":3}

5.2 Filme mithilfe des Begriffssatzes abrufen

Jetzt wollen wir Filme mit mindestens zwei vorgegebenen Tags („Komödie“, „Action“ und „Science-Fiction“) finden. Wir können die Abfrage „Terms Set“ verwenden, um diese Anforderung zu erfüllen:

Suche basierend auf „minimum_should_match_field“.

GET /movies/_search
{
  "query": {
    "terms_set": {
      "tags": {
        "terms": ["喜剧", "动作", "科幻"],
        "minimum_should_match_field": "tags_count"
      }
    }
  }
}

Der obige Code verwendet eine terms_set-Abfrage, um Filme in einem Index namens „Filme“ abzurufen, die eine dynamische Anzahl von Übereinstimmungen erfüllen, die durch das Feld „tags_count“ bestimmt werden, wobei die Abfrage-Tags „Comedy“, „Action“ und „Science-Fiction“ umfassen. Die zurückgegebenen Ergebnisse lauten wie folgt: Dokument 1 wird zurückgerufen.

e181be0036475f0d659f7d13a87435c2.png

Schauen Sie sich die Suche unten an.

Suche basierend auf „minimum_should_match_script“.

GET /movies/_search
{
  "query": {
    "terms_set": {
      "tags": {
        "terms": [
          "喜剧",
          "动作",
          "科幻"
        ],
        "minimum_should_match_script": {
          "source": "doc['tags_count'].value * 0.7"
        }
      }
    }
  }
}

Rufen Sie Filme aus dem Index mit dem Namen „Filme“ ab, die wie oben mit mindestens 70 % der Gesamtzahl der angegebenen Tags („Komödie“, „Action“ und „Sci-Fi“) übereinstimmen. Die Anzahl der Übereinstimmungen wird durch das benutzerdefinierte Skriptdokument bestimmt[ 'tags_count'].value * 0,7 dynamische Berechnung. Zwei Dokumente mit „_id“ 1 und „_id“ 3 werden zurückgerufen.

fe11f768e185511596fb2360dac9e507.png

6. Zusammenfassung

Die Termset-Abfrage ist eine sehr leistungsstarke Abfragemethode in Elasticsearch, die sich für die Verarbeitung komplexer Daten mit mehreren Attributen, Klassifizierungen oder Beschriftungen eignet.

Durch die flexible Festlegung passender Mengenkonditionen können wir ganz einfach Dokumente finden, die spezifische Anforderungen erfüllen.

Es ist jedoch wichtig zu beachten, dass es bei der Verwendung von Termset-Abfragen zu Leistungsproblemen kommen kann, insbesondere wenn große Datenmengen verarbeitet werden. Um die Abfrageleistung zu verbessern, können Sie eine Vorverarbeitung der Daten in Betracht ziehen, z. B. die Verwendung eines Clustering-Algorithmus zum Gruppieren von Beschriftungen, und dann Dokumente basierend auf der Gruppierung abfragen.

Literatur-Empfehlungen

  1. Erste Veröffentlichung im gesamten Netzwerk! Von 0 auf 1 Elasticsearch 8.X-Freigabevideo

  2. Heavyweight | Dead Elasticsearch 8.X Methodology Cognition List

  3. Wie kann man Elasticsearch systematisch erlernen?

  4. 2023, tu etwas

30caa489725722e70ecc245df3ef22b0.jpeg

Erwerben Sie schneller und in kürzerer Zeit mehr Trockenware!

Verbessern Sie sich mit über 2.000 Elastic-Enthusiasten auf der ganzen Welt!

f9f1206dc1cf417cd9722cd49af6609c.gif

Übernehmen Sie die Führung beim Erlernen fortgeschrittener Trockenwaren!

Supongo que te gusta

Origin blog.csdn.net/wojiushiwo987/article/details/130591798
Recomendado
Clasificación