Elasticsearch Wählen Sie bestimmte Felder aus

Elasticsearch Wahlen Sie Bestimmte Felder Aus



Elasticsearch gibt standardmäßig alle Felder in einem Dokument zurück, wenn eine Suchabfrage durchgeführt wird. Dies wird durch den Parameter _source definiert, der alle Daten enthält, die während der Indizierung im Datensatz gespeichert wurden.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: Reporting'

Ausgabe:







Möglicherweise möchten Sie jedoch nicht alle Felder aus einem bestimmten Dokument abrufen. In diesem Lernprogramm erfahren Sie, wie Sie bestimmte Felder aus einem Dokument auswählen.



Elasticsearch-Felder-Option

Der Parameter fields ermöglicht es uns, bestimmte Felder in einer Suchanfrage abzurufen. Darüber hinaus ermöglicht uns der Feldparameter, einzelne oder mehrere Felder abzurufen. Sie können Datumsangaben und räumliche Datentypen auch mithilfe des Parameters fields formatieren.



Angenommen, wir möchten die Felder „index“, „id“, „title“, „release_year“, „listed in“, „duration“ und „rating“ aus dem Netflix-Index abrufen, können wir eine Abfrage wie unten gezeigt ausführen:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: Reporting' -H 'Content-Type: application/json' -d'
{
'Anfrage': {
'passen': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'Felder': [
'Index',
'Ich würde',
'Titel',
'Erscheinungsjahr',
'gelistet in',
'Dauer',
'Bewertung'
],
  '_source': false

}'

In der obigen Anfrage verwenden wir die Such-API, um das Dokument mit der angegebenen ID im Übereinstimmungsparameter zu durchsuchen.

Wir verwenden dann den Parameter fields, um die spezifischen Felder aus dem Zieldokument abzurufen.



Beachten Sie, dass Elasticsearch standardmäßig den Parameter _source enthält, der aus allen Dokumentfeldern besteht. Um sicherzustellen, dass wir nur die angegebenen Felder abrufen, deaktivieren wir den Parameter _source:

Die obige Anfrage sollte eine Antwort wie gezeigt zurückgeben:

{
'nahm': 1,
'timed_out': falsch,
'_shards': {
'gesamt': 1,
'erfolgreich': 1,
'übersprungen': 0,
'fehlgeschlagen': 0
},
'Treffer': {
'gesamt': {
'Wert': 1,
'Beziehung': 'eq'
},
'max_score': 1,
'Treffer': [
{
'_index': 'Netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'Felder': {
'gelistet in': [
'Dokumentarfilme'
],
'Dauer': [
'90 Minuten'
],
'Erscheinungsjahr': [
2020
],
'Bewertung': [
'PG-13'
],
'Titel': [
„Dick Johnson ist tot“
]
}
}
]
}
}

Sie können auch den Parameter _source verwenden, um zu definieren, welche Felder von einer Suchabfrage zurückgegeben werden sollen. Ein Beispiel ist unten gezeigt:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: Reporting' -H 'Content-Type: application/json' -d'
{
'_source': ['title', 'release_year', 'rating', 'duration'],
'Anfrage': {
'Begriff': {
'_Ich würde': {
'Wert': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

In diesem Fall geben wir die Felder, die wir abrufen möchten, als Array im Quellparameter an. Die obige Anfrage sollte die Antwort wie gezeigt zurückgeben:

{
'genommen': 0,
'timed_out': falsch,
'_shards': {
'gesamt': 1,
'erfolgreich': 1,
'übersprungen': 0,
'fehlgeschlagen': 0
},
'Treffer': {
'gesamt': {
'Wert': 1,
'Beziehung': 'eq'
},
'max_score': 1,
'Treffer': [
{
'_index': 'Netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_Quelle': {
'Dauer': '90 Minuten',
'release_year': 2020,
'Rating': 'PG-13',
'title': 'Dick Johnson ist tot'
}
}
]
}

}

Fazit

In diesem Artikel haben Sie gelernt, wie Sie mithilfe der Parameter fields und _source bestimmte Felder aus einer Suchanfrage abrufen.

Um mehr über Elasticsearch und seine Funktionen zu erfahren, sehen Sie sich unsere Tutorials zu diesem Thema an. Sie werden garantiert etwas Nützliches finden.

Danke fürs Lesen und bis zum nächsten!