unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Elasticsearch

Elasticsearch #

Elasticsearch adalah mesin pencari dan analitik terdistribusi yang kuat, yang memungkinkan penyimpanan, pencarian, dan analisis data dalam skala besar secara real-time. Elasticsearch sering digunakan untuk logging, monitoring, analitik data, dan pencarian teks penuh.

Instalasi Elasticsearch #

Untuk menggunakan Elasticsearch, pertama-tama Anda perlu menginstalnya di mesin lokal atau di server. Anda dapat mengikuti langkah-langkah instalasi resmi dari situs Elasticsearch.

Instalasi Elasticsearch di Python #

Untuk berinteraksi dengan Elasticsearch dari Python, kita menggunakan library elasticsearch-py. Instal library ini menggunakan pip:

pip install elasticsearch

Menghubungkan ke Elasticsearch dan Operasi Dasar #

Berikut adalah contoh bagaimana menghubungkan ke Elasticsearch dan melakukan operasi dasar seperti menambah, mencari, dan menghapus dokumen.

Menghubungkan ke Elasticsearch #

from elasticsearch import Elasticsearch

# Membuat koneksi ke Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

Menambahkan Dokumen #

Untuk menambahkan dokumen ke indeks di Elasticsearch:

doc = {
    'author': 'John Doe',
    'text': 'Elasticsearch adalah mesin pencari yang kuat',
    'timestamp': '2024-07-28T14:12:12'
}

# Menambahkan dokumen ke indeks 'test'
res = es.index(index='test', id=1, body=doc)
print(res['result'])

Mencari Dokumen #

Untuk mencari dokumen berdasarkan kueri:

# Mencari dokumen dengan kata 'pencari' di dalamnya
res = es.search(index='test', body={
    'query': {
        'match': {
            'text': 'pencari'
        }
    }
})

for hit in res['hits']['hits']:
    print(hit['_source'])

Mengambil Dokumen Berdasarkan ID #

Untuk mengambil dokumen tertentu berdasarkan ID:

res = es.get(index='test', id=1)
print(res['_source'])

Menghapus Dokumen #

Untuk menghapus dokumen dari indeks:

res = es.delete(index='test', id=1)
print(res['result'])

Penggunaan Lanjutan Elasticsearch #

Menggunakan Mapping #

Mapping digunakan untuk menentukan struktur dan jenis data di dalam indeks:

# Membuat mapping untuk indeks 'test'
mapping = {
    'mappings': {
        'properties': {
            'author': {'type': 'text'},
            'text': {'type': 'text'},
            'timestamp': {'type': 'date'}
        }
    }
}

res = es.indices.create(index='test', body=mapping)
print(res)

Bulk Operations #

Untuk melakukan operasi massal seperti menambah atau menghapus banyak dokumen sekaligus:

from elasticsearch import helpers

# Menyiapkan data untuk bulk indexing
actions = [
    {
        '_op_type': 'index',
        '_index': 'test',
        '_id': 2,
        '_source': {
            'author': 'Jane Doe',
            'text': 'Ini adalah dokumen kedua',
            'timestamp': '2024-07-28T15:12:12'
        }
    },
    {
        '_op_type': 'index',
        '_index': 'test',
        '_id': 3,
        '_source': {
            'author': 'John Smith',
            'text': 'Elasticsearch sangat berguna untuk pencarian teks penuh',
            'timestamp': '2024-07-28T16:12:12'
        }
    }
]

# Menjalankan operasi bulk
helpers.bulk(es, actions)

Agregasi #

Agregasi digunakan untuk analitik dan pengelompokan data:

# Menjalankan agregasi untuk menghitung jumlah dokumen per author
res = es.search(index='test', body={
    'size': 0,
    'aggs': {
        'authors': {
            'terms': {
                'field': 'author.keyword'
            }
        }
    }
})

for bucket in res['aggregations']['authors']['buckets']:
    print(f"Author: {bucket['key']}, Count: {bucket['doc_count']}")

Kesimpulan #

Elasticsearch adalah alat yang sangat kuat untuk pencarian dan analitik data dalam skala besar. Dengan library elasticsearch-py, integrasi Elasticsearch dengan aplikasi Python menjadi mudah dan efisien. Untuk informasi lebih lanjut, Anda bisa merujuk ke dokumentasi resmi Elasticsearch dan elasticsearch-py.