Giriş


Bu bölümde uygulamaya tam metin arama (full-text search) özelliği ekleniyor. Elasticsearch kullanılıyor; ancak mimari soyutlama sayesinde farklı bir arama motoruna geçmek yalnızca tek bir modülün yeniden yazılmasını gerektiriyor.


Elasticsearch Kurulumu

Docker ile Çalıştırma (Geliştirme Ortamı)

$ docker run --name elasticsearch -d --rm -p 9200:9200 \\\\
    --memory="2GB" \\\\
    -e discovery.type=single-node -e xpack.security.enabled=false \\\\
    -t docker.elastic.co/elasticsearch/elasticsearch:9.0.3

Python İstemci Kütüphanesi

(venv) $ pip install elasticsearch
(venv) $ pip freeze > requirements.txt

Elasticsearch Docker imajının ana sürümü ile Python paketinin ana sürümü eşleşmelidir.


Elasticsearch Temel Kullanımı

>>> from elasticsearch import Elasticsearch
>>> es = Elasticsearch('<http://localhost:9200>')

# Doküman ekleme
>>> es.index(index='my_index', id=1, document={'text': 'this is a test'})
>>> es.index(index='my_index', id=2, document={'text': 'a second test'})

# Arama
>>> es.search(index='my_index', query={'match': {'text': 'this test'}})

# İndex silme
>>> es.indices.delete(index='my_index')

Elasticsearch Yapılandırması

config.py

class Config:
    # ...
    ELASTICSEARCH_URL = os.environ.get('ELASTICSEARCH_URL')

.env Dosyasına Ekle