SDKs
Python SDK
Installieren und verwenden Sie das aacsearch Python SDK für Suche, Index-Verwaltung, Synonyme, Kuratierungen und Analysen.
Python SDK (aacsearch)
Das Python-Paket aacsearch stellt zwei Clients bereit:
| Client | Bereich | Schlüssel-Präfix | Anwendungsfall |
|---|---|---|---|
SearchClient | Nur Suche | ss_search_* | Öffentliche Suche aus Backend-Skripten |
AdminClient | Vollzugriff | aa_admin_* | Serverseitige Verwaltung, CI/CD |
Installation
Erfordert Python 3.9+.
pip install aacsearchSchnellstart
SearchClient (öffentlich)
Verwenden Sie einen Suchbereich-API-Schlüssel (ss_search_*) oder ein eingeschränktes Token (ss_scoped_*).
from aacsearch import SearchClient
client = SearchClient(
base_url="https://app.aacsearch.com",
api_key="ss_search_your_key_here",
index_slug="products",
)
# Einfache Suche
results = client.search(q="laptop")
print(f"Found {results['found']} results")
# Suche mit Filtern und Facetten
results = client.search(
q="phone",
filter_by="price:<=500",
facet_by="brand,category",
sort_by="price:asc",
per_page=20,
)
# Multi-Suche (mehrere Abfragen in einer Anfrage)
combined = client.multi_search([
{"q": "laptop", "perPage": 5},
{"q": "phone", "perPage": 5},
])AdminClient (serverseitig)
Verwenden Sie einen Adminbereich-API-Schlüssel (aa_admin_*). Admin-Schlüssel niemals in Browser-Code einbetten.
from aacsearch import AdminClient
admin = AdminClient(
base_url="https://app.aacsearch.com",
api_key="aa_admin_your_key_here",
project_id="org_xxx",
)Index-Verwaltung
# Einen Index erstellen
index = admin.create_index(
slug="products",
display_name="Products",
fields=[
{"name": "title", "type": "string"},
{"name": "description", "type": "string"},
{"name": "price", "type": "float", "sort": True},
{"name": "brand", "type": "string", "facet": True},
{"name": "category", "type": "string[]", "facet": True},
],
default_sorting_field="price",
)
print(f"Created index: {index['id']}")
# Alle Indizes auflisten
indexes = admin.list_indexes()Dokumenten-Operationen
# Ein einzelnes Dokument einfügen/aktualisieren
admin.upsert_document(
index_id=index["id"],
document_id="doc_001",
document={
"title": "MacBook Pro 16\"",
"description": "Apple M3 Pro chip, 18GB RAM",
"price": 2499.00,
"brand": "Apple",
"category": ["Laptops", "Apple"],
},
)
# Batch einfügen/aktualisieren (bis zu 5000)
admin.batch_upsert_documents(
index_id=index["id"],
documents=[
{"id": "doc_002", "title": "iPhone 15 Pro", "price": 1199.00, "brand": "Apple"},
{"id": "doc_003", "title": "Galaxy S24", "price": 999.00, "brand": "Samsung"},
],
)Synonyme
admin.upsert_synonyms(
index_id=index["id"],
synonyms=[
{"root": "laptop", "synonym": "notebook"},
{"root": "laptop", "synonym": "ultrabook"},
{"root": "phone", "synonym": "smartphone"},
],
)Kuratierungen
admin.upsert_curations(
index_id=index["id"],
curations=[
{"query": "macbook", "pinnedIds": ["doc_001"]},
],
)Analysen & Nutzung
# 7-Tage-Analysen
analytics = admin.get_analytics(period="7d")
# 30-Tage-Nutzungsdaten
usage = admin.get_usage(window_days=30)API-Schlüssel-Verwaltung
# Einen Suchschlüssel erstellen
key = admin.create_key(
name="My Search Key",
scopes=["search"],
index_slug="products",
)
print(f"Created key: {key['prefix']}... (plaintext: {key.get('key', 'shown once')})")
# Schlüssel auflisten und widerrufen
keys = admin.list_keys()
admin.revoke_key(key_id=key["id"])Fehlerbehandlung
from aacsearch import (
AacsearchError,
AuthenticationError,
NotFoundError,
RateLimitError,
)
try:
results = client.search(q="laptop")
except AuthenticationError:
print("Ungültiger oder abgelaufener API-Schlüssel")
except NotFoundError:
print("Index nicht gefunden")
except RateLimitError:
print("Ratenlimit überschritten, später erneut versuchen")
except AacsearchError as e:
print(f"API-Fehler {e.status_code}: {e}")