Aktueller Standort: Startseite> Neueste Artikel> Erstellen Sie ein Elasticsearch -Abfragebereich Array

Erstellen Sie ein Elasticsearch -Abfragebereich Array

M66 2025-05-11

In der tatsächlichen Entwicklung bietet PHP viele Bequemlichkeitsfunktionen für die Verarbeitung von Arrays, und die Funktion array_column ist eine davon. Array_Column kann uns helfen, eine Spalte in einem zweidimensionalen Array zu extrahieren und ein neues Array zurückzugeben, das die Werte dieser Spalte enthält. Die Funktion von Array_Column ist sehr nützlich, wenn Sie ein Elasticsearch -Abfrage -Feldarray erstellen.

In diesem Artikel wird vorgestellt, wie Sie Array_Column verwenden, um ein Feld -Feldarray von Elasticsearch -Abfragen zu erstellen, insbesondere wie Sie bestimmte Felder aus den ursprünglichen Daten extrahieren können, damit wir die Elasticsearch -Abfrage weiter konstruieren können.

1. Was ist die Funktion array_column ?

Array_Column ist eine integrierte Funktion in PHP, die alle Werte einer angegebenen Spalte aus einem zweidimensionalen Array extrahiert und diese Werte als neues eindimensionales Array zurückgibt. Die grundlegende Syntax dieser Funktion lautet wie folgt:

 array_column(array $array, $column_key, $index_key = null): array
  • $ Array : Das multidimensionale Eingangsarray.

  • $ column_key : Der Schlüsselname der Spalte, der extrahiert werden muss.

  • $ INDEX_KEY : Optionaler Parameter, mit dem die zum Index der Ergebnisarray verwendete Spalte angegeben ist (falls dies nicht angegeben ist, verwendet das Ergebnisarray automatisch den numerischen Index).

2. Beispiel: Erstellen eines Elasticsearch -Abfrage -Feldarrays

Angenommen, Sie haben ein zweidimensionales Array mit Dokumentdaten. Jedes Dokument enthält mehrere Felder wie ID , Name , Kategorie usw. Sie möchten alle Kategorienfelder aus ihm extrahieren und ein Array für die Verwendung durch Elasticsearch-Abfrage erstellen.

2.1. Rohdaten

Angenommen, die Originaldaten sind wie folgt:

 $documents = [
    ['id' => 1, 'name' => 'Apple', 'category' => 'Fruit', 'url' => 'http://example.com/apple'],
    ['id' => 2, 'name' => 'Carrot', 'category' => 'Vegetable', 'url' => 'http://example.com/carrot'],
    ['id' => 3, 'name' => 'Banana', 'category' => 'Fruit', 'url' => 'http://example.com/banana'],
    ['id' => 4, 'name' => 'Spinach', 'category' => 'Vegetable', 'url' => 'http://example.com/spinach']
];

2.2. Das Kategoriefeld mit Array_Column extrahieren

Wir können die Funktion array_column verwenden, um alle Kategoriefelder daraus zu extrahieren und ein Array für die einfache Verwendung in Elasticsearch -Abfrage zu erstellen.

 $categories = array_column($documents, 'category');
print_r($categories);

Ausgangsergebnis:

 Array
(
    [0] => Fruit
    [1] => Vegetable
    [2] => Fruit
    [3] => Vegetable
)

2.3. Erstellen Sie ein Elasticsearch -Abfragebereich Array

Angenommen, Sie müssen eine Elasticsearch -Abfrage erstellen, die auf dem Feld Kategorien basiert, um Dokumente zu finden, die zur Fruchtkategorie gehören. Sie können das tun:

 $searchTerm = 'Fruit';
$query = [
    'query' => [
        'terms' => [
            'category' => array_column(
                array_filter($documents, function($doc) use ($searchTerm) {
                    return $doc['category'] === $searchTerm;
                }),
                'id'
            )
        ]
    ]
];

// Abfrageinhalte drucken
print_r($query);

Angenommen, wir möchten das Dokument mit der Kategorie -Feldfrucht abfragen. Array_filter filtert zuerst alle Dokumente mit der Kategoriefrucht , verwenden Sie dann Array_Column , um das ID -Feld daraus zu extrahieren, und erstellen schließlich ein Elasticsearch -Abfragearray.

Das Ausgangsabfragearray kann so aussehen:

 Array
(
    [query] => Array
        (
            [terms] => Array
                (
                    [category] => Array
                        (
                            [0] => 1
                            [1] => 3
                        )
                )
        )
)

3. CODE CODE BEISPIEL

 <?php

$documents = [
    ['id' => 1, 'name' => 'Apple', 'category' => 'Fruit', 'url' => 'http://example.com/apple'],
    ['id' => 2, 'name' => 'Carrot', 'category' => 'Vegetable', 'url' => 'http://example.com/carrot'],
    ['id' => 3, 'name' => 'Banana', 'category' => 'Fruit', 'url' => 'http://example.com/banana'],
    ['id' => 4, 'name' => 'Spinach', 'category' => 'Vegetable', 'url' => 'http://example.com/spinach']
];

// verwenden array_column Alle extrahieren category Felder
$categories = array_column($documents, 'category');
print_r($categories);

// Bauen Elasticsearch 查询Felder数组
$searchTerm = 'Fruit';
$query = [
    'query' => [
        'terms' => [
            'category' => array_column(
                array_filter($documents, function($doc) use ($searchTerm) {
                    return $doc['category'] === $searchTerm;
                }),
                'id'
            )
        ]
    ]
];

// Abfrageinhalte drucken
print_r($query);

?>

4. Zusammenfassung

Die Funktion array_column ist sehr geeignet, um Daten aus einem mehrdimensionalen Array zu extrahieren, insbesondere beim Erstellen von Elasticsearch -Abfragen, die die von uns benötigten Felder effizient extrahieren können, wodurch wir das richtige Abfrageformat erstellen können.

Wenn Ihre Datenquelle eine große Anzahl von Dokumenten enthält, kann die Verwendung der Funktion array_column die Einfachheit und Lesbarkeit des Codes erheblich verbessern und auch den Ärger des manuellen Durchquerens des Arrays effektiv vermeiden.

Durch die Kombination anderer Array -Betriebsfunktionen (wie Array_Filter ) und Array_Column können wir komplexe Abfragebereiche -Arrays für Elasticsearch flexibel erstellen, um unterschiedliche Anforderungen an Abfrage zu erfüllen.

Hoffe dieser Artikel hilft dir! Wenn Sie Fragen haben oder mehr über Fertigkeiten von PHP -Array -Operationen erfahren möchten, können Sie Fragen stellen!