


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
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
Jika anda masih menggunakan versi lama elasticsearch:
pip install "elasticsearch <p>Pada masa ini elasticsearch==7.17.12, requests-aws4auth==1.3.1.</p> <p>Kini, anda boleh membuat pelanggan menggunakan yang berikut:<br> </p><pre class="brush:php;toolbar:false">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!

Forhandlinglargedatasetsinpython, usenumpyarraysforbetterperformance.1) numpyarraysarememory-efisien danfasterfornumumerical.2) mengelakkan yang tidak dapat dipertahankan.3)

Inpython, listsusedynamicMemoryAllocationwithover-peruntukan, pemecahan yang tidak dapat dilaksanakan.1) listsallocatemoremoremorythanneedinitial, resizingwhennessary.2) numpyarraysallocateExactMemoreForelements, menawarkanpredictableSabeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeBeat.

Inpython, YouCansspectHedatypeyFeleMeremodelerernspant.1) Usenpynernrump.1) usenpynerp.dloatp.ploatm64, formor preciscontrolatatypes.

Numpyisessentialfornumericalcomputinginpythonduetoitsspeed, ingatanefisiensi, dancomprehensivemathematicalfunctions.1) it'sfastbeCauseitperformsoperatiation

Contiguousmemoryallocationiscialforarraysbecauseitallowsficientandfastelementaccess.1) itenablesconstantTimeAccess, O (1), duetodirectaddresscalculation.2) itimproveScheFiCiencyBymultmulteLemiSphetfespercacheline.3)

Slicingapythonlistisdoneusingthesyntaxlist [Mula: berhenti: langkah] .here'showitworks: 1) startistheindexofthefirstelementtoinclude.2) stopistheindexofthefirstelementToexclude.3)

NumpyallowsforvariousoperationsonArrays: 1) BasicarithmeticLikeaddition, penolakan, pendaraban, danDivision; 2) Pengerjaan AdvancedSuchasmatrixmultiplication; 3) Element-WiseOperationswithoutExplicitLoops;

Arraysinpython, terutamanya yang ada, adalah, penawaran yang ditawarkan.1) numpyarraysenableFandlingoflargedataSetsandClexPleperationsLikemovingAverages.2)


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

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
