


Cara menyambung ke kelompok AWS OpenSearch atau Elasticsearch menggunakan python
Menyambung kepada perkhidmatan OpenSearch (ES) yang berjalan dalam AWS menggunakan Python adalah menyakitkan. Kebanyakan contoh yang saya temui dalam talian sama ada tidak berfungsi atau sudah lapuk, membuatkan saya sentiasa membetulkan isu yang sama. Untuk menjimatkan masa dan kekecewaan, berikut ialah koleksi coretan kod yang berfungsi, terkini setakat Disember 2024.
- Sambung menggunakan perpustakaan opensearch-py (OpenSearch ElasticSearch)
-
Sambung menggunakan perpustakaan elasticsearch (ElasticSearch sahaja)
- elasticsearch >= 8
- elasticsearch < 8
Sambung menggunakan perpustakaan opensearch-py (OpenSearch ElasticSearch)
Ini ialah cara pilihan saya untuk menyambung ke tika ES yang diuruskan oleh AWS. Ia berfungsi untuk kedua-dua kelompok ElasticSearch dan OpenSearch, dan pengesahan boleh memanfaatkan profil AWS.
Pasang opensearch-py dan boto3 (untuk pengesahan):
pip install opensearch-py boto3
Pada masa penulisan, ini memasang opensearch-py==2.8.0 dan boto3==1.35.81.
Kini, anda boleh membuat pelanggan menggunakan yang berikut:
import boto3 from opensearchpy import ( AWSV4SignerAuth, OpenSearch, RequestsHttpConnection, ) es_host = "search-my-aws-esdomain-5k2baneoyj4vywjseocultv2au.eu-central-1.es.amazonaws.com" aws_access_key = "AKIAXCUEGTAF3CV7GYKA" aws_secret_key = "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" region = "eu-central-1" # Note: you can also use boto3.Session(profile_name="my-profile") or other ways session = boto3.Session( aws_access_key_id=aws_access_key, aws_secret_access_key=aws_secret_key, region_name=region, ) client = OpenSearch( hosts=[{"host": es_host, "port": 443}], http_auth=AWSV4SignerAuth(session.get_credentials(), region, "es"), connection_class=RequestsHttpConnection, use_ssl=True, )
Perhatikan bahawa boto3.Session menyokong pelbagai cara untuk mencipta sesi: menggunakan profil, pembolehubah persekitaran dan banyak lagi. Saya akan benarkan anda menyemaknya!
Sebaik sahaja anda memilikinya, semak sambungan menggunakan:
client.ping() # should return True client.info() # use this to get a proper error message if ping fails
Untuk menyemak indeks:
# List all indices client.cat.indices() client.indices.get("*") # Check the existence of an indice client.indices.exists("my-index")
Sambung menggunakan perpustakaan elasticsearch (ElasticSearch sahaja)
? Ini hanya berfungsi untuk kelompok ElasticSearch! Menyambung ke kluster OpenSearch meningkatkan
UnsupportedProductError: Pelanggan menyedari bahawa pelayan bukan Elasticsearch dan kami tidak menyokong produk yang tidak diketahui ini
elasticsearch >= 8
Kebanyakan coretan masih merujuk RequestsHttpConnection, kelas yang telah dialih keluar dalam elasticsearch 8.X. Jika anda mencari ralat tidak boleh mengimport nama 'RequestsHttpConnection' daripada 'elasticsearch', anda berada di tempat yang betul!
Pasang elasticsearch (ini harus memasang elastic-transport juga), dan requests_aws4auth . Yang terakhir, berdasarkan permintaan, diperlukan untuk mengendalikan pengesahan kepada AWS:
pip install elasticsearch requests-aws4auth
Pada masa penulisan, ini memasang elastic-transport==8.15.1, elasticsearch==8.17.0 dan requests-aws4auth==1.3.1.
Kini, anda boleh membuat pelanggan menggunakan yang berikut:
from elastic_transport import RequestsHttpNode from elasticsearch import Elasticsearch from requests_aws4auth import AWS4Auth es_endpoint = "search-my-aws-esdomain-5k2baneoyj4vywjseocultv2au.eu-central-1.es.amazonaws.com" aws_access_key = "AKIAXCUEGTAF3CV7GYKA" aws_secret_key = "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" region = "eu-central-1" es = Elasticsearch( f"https://{es_host}", http_auth=AWS4Auth( aws_access_key, aws_secret_key, region, "es", ), verify_certs=True, node_class=RequestsHttpNode, )
Sebaik sahaja anda memilikinya, semak sambungan menggunakan:
es.ping() # should return True es.info() # use this to get a proper error message if ping fails
elasticsearch < 8
Jika anda masih menggunakan versi lama elasticsearch:
pip install "elasticsearch<8" requests-aws4auth
Pada masa ini elasticsearch==7.17.12, requests-aws4auth==1.3.1.
Kini, anda boleh membuat pelanggan menggunakan yang berikut:
pip install opensearch-py boto3
Periksa sambungan:
import boto3 from opensearchpy import ( AWSV4SignerAuth, OpenSearch, RequestsHttpConnection, ) es_host = "search-my-aws-esdomain-5k2baneoyj4vywjseocultv2au.eu-central-1.es.amazonaws.com" aws_access_key = "AKIAXCUEGTAF3CV7GYKA" aws_secret_key = "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" region = "eu-central-1" # Note: you can also use boto3.Session(profile_name="my-profile") or other ways session = boto3.Session( aws_access_key_id=aws_access_key, aws_secret_access_key=aws_secret_key, region_name=region, ) client = OpenSearch( hosts=[{"host": es_host, "port": 443}], http_auth=AWSV4SignerAuth(session.get_credentials(), region, "es"), connection_class=RequestsHttpConnection, use_ssl=True, )
Atas ialah kandungan terperinci Cara menyambung ke kelompok AWS OpenSearch atau Elasticsearch menggunakan python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Fastapi ...

Menggunakan Python di Terminal Linux ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Mengenai Pythonasyncio ...

Memahami Strategi Anti-Crawling of Investing.com Ramai orang sering cuba merangkak data berita dari Investing.com (https://cn.investing.com/news/latest-news) ...

Memuatkan Fail Pickle di Python 3.6 Kesalahan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...

Perbincangan mengenai sebab -sebab mengapa fail saluran paip tidak dapat ditulis apabila menggunakan crawler scapy apabila belajar dan menggunakan crawler scapy untuk penyimpanan data yang berterusan, anda mungkin menghadapi fail saluran paip ...
