Elasticsearch: Erste Suchanfrage mit Python erstellen

Überblick

Webinar zur Einführung in Elasticsearch

Elasticsearch bietet eine Reihe von Suchtechniken, angefangen bei BM25, dem Industriestandard für die textuelle Suche. Es bietet außerdem eine semantische Suche auf Basis von KI-Modellen und verbessert so die Ergebnisse basierend auf Kontext und Absicht.

Elasticsearch bietet offizielle Clients für mehrere Programmiersprachen, darunter Python, Rust, Java, JavaScript und weitere. Diese Clients bieten vollständige API-Unterstützung für Indizierung, Suche und Clusterverwaltung. Sie sind auf Leistung optimiert und werden mit Elasticsearch-Versionen auf dem neuesten Stand gehalten, um Kompatibilität und Sicherheit zu gewährleisten.


Los geht's

In diesem Beispiel indizieren Sie einige Dokumente und fragen sie mit Python ab. Am Ende dieses Leitfadens wissen Sie, wie Sie eine Backend-Anwendung mit Elasticsearch verbinden, um Ihre Abfragen zu beantworten.

Elastic Cloud-Projekt erstellen

Beginnen Sie zunächst mit einer 14-tägigen Testversion. Sobald Sie ein Konto erstellt haben, befolgen Sie die nachstehenden Schritte, um zu erfahren, wie Sie Ihr erstes Elasticsearch Serverless-Projekt starten. Wählen Sie Elasticsearch aus.

screenshot-which-type-of-project-would-you-like-to-create.png

Dann erstellen Sie Allgemeine Zwecke, geben Sie dem Projekt einen Namen wie Mein Projekt und erstellen Sie es.

elasticsearch general purpose.png

Lassen Sie uns unseren ersten Elasticsearch-Index erstellen, wir können ihn my-index nennen. Wählen Sie Create my index aus.

screenshot-get-started-with-elasticsearch.png

Sie haben Ihren ersten Index erstellt! Erstellen Sie als Nächstes einen API-Schlüssel, damit Ihre Anwendung mit Elasticsearch kommunizieren kann. Wählen Sie die bevorzugte Sprache aus. Nutzen Sie für dieses Beispiel Python.

screenshot-my-index.png

Erste Schritte mit Daten in Elasticsearch

Installieren Sie in Ihrem Terminal den Elasticsearch-Client mit pip:

pip install elasticsearch

Kopieren Sie Ihren API-Schlüssel aus der oberen rechten Ecke und fügen Sie ihn neben der Projekt-URL in die Konfiguration des Clients ein. Wir können bereits die Mappings für unseren Index erstellen, der nur ein Textfeld mit dem kreativen Namen „text“ haben wird.

from elasticsearch import Elasticsearch

client = Elasticsearch(
"https://my-project-bff300.es.us-east-1.aws.elastic.cloud:443",
api_key="YOUR-API-KEY"
)

index_name = "my-index"

mappings = {
"properties": {
"text": {
"type": "text"
}
}
}

mapping_response = client.indices.put_mapping(index=index_name, body=mappings)
print(mapping_response)

Dann können wir endlich Massenanfragen verwenden, um Daten an Elasticsearch zu senden. Lassen Sie uns drei Dokumente mit einer _bulk-Anfrage indizieren. Denken Sie daran, auch bei der Indizierung von Hunderten bis Milliarden von Dokumenten Massenanfragen zu verwenden, da dies die bevorzugte Wahl bei der Indizierung großer Mengen von Dokumenten in Elasticsearch ist.

docs = [
{
"text": "Yellowstone National Park is one of the largest national parks in the United States. It ranges from the Wyoming to Montana and Idaho, and contains an area of 2,219,791 acress across three different states. Its most famous for hosting the geyser Old Faithful and is centered on the Yellowstone Caldera, the largest super volcano on the American continent. Yellowstone is host to hundreds of species of animal, many of which are endangered or threatened. Most notably, it contains free-ranging herds of bison and elk, alongside bears, cougars and wolves. The national park receives over 4.5 million visitors annually and is a UNESCO World Heritage Site."
},
{
"text": "Yosemite National Park is a United States National Park, covering over 750,000 acres of land in California. A UNESCO World Heritage Site, the park is best known for its granite cliffs, waterfalls and giant sequoia trees. Yosemite hosts over four million visitors in most years, with a peak of five million visitors in 2016. The park is home to a diverse range of wildlife, including mule deer, black bears, and the endangered Sierra Nevada bighorn sheep. The park has 1,200 square miles of wilderness, and is a popular destination for rock climbers, with over 3,000 feet of vertical granite to climb. Its most famous and cliff is the El Capitan, a 3,000 feet monolith along its tallest face."
},
{
"text": "Rocky Mountain National Park is one of the most popular national parks in the United States. It receives over 4.5 million visitors annually, and is known for its mountainous terrain, including Longs Peak, which is the highest peak in the park. The park is home to a variety of wildlife, including elk, mule deer, moose, and bighorn sheep. The park is also home to a variety of ecosystems, including montane, subalpine, and alpine tundra. The park is a popular destination for hiking, camping, and wildlife viewing, and is a UNESCO World Heritage Site."
}
]

bulk_response = helpers.bulk(client, docs, index=index_name)
print(bulk_response)

Sie sollten die Dokumente in Elasticsearch sehen können.

view docs in elasticsearch.png


Arbeiten mit Elasticsearch

Abfrage erstellen

Erstellen Sie ein neues Skript (z. B. search.py), das eine Abfrage definiert und die folgende Suchanfrage ausführt:

FROM my-index
| WHERE MATCH(text, "yosemite")
| LIMIT 5

Fügen Sie diese Abfrage in client.esql.query ein:

from elasticsearch import Elasticsearch

client = Elasticsearch(
"https://my-project-bff307.es.us-east-1.aws.elastic.cloud:443",
api_key="YOUR-API-KEY"
)

# Execute the search query
response = client.esql.query(
query="""
FROM my-index
| WHERE MATCH(text, "yosemite")
| LIMIT 5
""",
format="csv"
)

print(response)

Überprüfen Sie Ihr Ergebnis:

„Der Yosemite-Nationalpark ist ein Nationalpark der Vereinigten Staaten und erstreckt sich über mehr als 750.000 Acres Land in Kalifornien. Der Park gehört zum UNESCO-Weltkulturerbe und ist vor allem für seine Granitfelsen, Wasserfälle und Riesenmammutbäume bekannt. Yosemite verzeichnet in den meisten Jahren über vier Millionen Besucher, mit einem Höchststand von fünf Millionen Besuchern im Jahr 2016. Der Park beherbergt eine Vielzahl von Wildtieren, darunter Maultierhirsche, Schwarzbären und die bedrohten Sierra-Nevada-Dickhornschafe. Der Park umfasst 1.200 Quadratmeilen Wildnis und ist ein beliebtes Ziel für Kletterer, die hier über 3.000 Fuß vertikalen Granit erklimmen können. Die berühmteste Klippe ist der El Capitan, ein 3.000 Fuß hoher Monolith entlang der höchsten Wand."

Jetzt sind Sie bereit, den Client zu verwenden, um Elasticsearch von jedem Python-Backend wie Flask, Django usw. abzufragen. Weitere Informationen finden Sie in der Dokumentation zum Elasticsearch Python-Client .


Wie geht es weiter?

Vielen Dank, dass Sie mit Elastic Cloud eine semantische Suche für Ihre Daten eingerichtet haben. Für Ihre ersten Schritte mit Elastic sollten Sie einige operative, sicherheitsrelevante und datenbezogene Komponenten kennen, die Sie verwalten sollten, wenn Sie die Bereitstellung in Ihrer Umgebung vornehmen.

Bereit loszulegen? Starten Sie eine kostenlose 14-tägige Testversion von Elastic Cloud oder probieren Sie diese 15-minütigen praktischen Übungen zu Search AI 101 aus.

Kostenlosen Test starten