[英]Connecting to remote Elasticsearch server with python's Elasticsearch package
我想為我的網站使用遠程 Elasticsearch 服務器。
我已經使用elastic.co/
服務創建了一個遠程 Elasticsearch 服務器。 I can connect/ping remote Elasticsearch server using the following command (it is scrubbed of sensitive info): curl -u username:password https://55555555555bb0c30d1cba4e9e6.us-central1.gcp.cloud.es.io:9243
將此命令綁定到終端后,我收到以下響應:
{
"name" : "instance-0000000001",
"cluster_name" : "555555555555",
"cluster_uuid" : "55555555555",
"version" : {
"number" : "7.10.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "555555555555555555555555",
"build_date" : "2021-01-13T00:42:12.435326Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
I am using the following Elasticsearch python client to integrate Elasticsearch with my website: https://elasticsearch-py.readthedocs.io/en/v7.10.1/index.html#
To initialize a local connection, I import the Elasticsearch class and initialize an instance of that class by pasting in the local url of my Elasticsearch server.
>>> from elasticsearch import Elasticsearch
>>> es = Elasticsearch('http://localhost:9200')
>>> es
<Elasticsearch([{'host': 'localhost', 'port': 9200}])>
現在我想使用相同的 Elasticsearch class 連接到我的遠程服務器。 為此,我需要使用連接到我的遠程 elasticsearch 服務器的信息來格式化 Elasticsearch object 的初始化。
這是我遇到麻煩的地方。 Elasticsearch class 的文檔字符串非常不透明。 簡而言之,它要求我創建一個自定義連接 object 並且我無法弄清楚如何去做。
Elasticsearch object 的文檔[稍微好一點][1] 但仍然沒有給出涉及用戶名和密碼的示例。
我有能力創建一個 API 密鑰,但我不知道如何使用它。 涉及 API 密鑰或回答如何使用我的用戶名和密碼進行連接的答案將非常有幫助。
您需要按照文檔中的說明使用TLS/SSL 和身份驗證進行連接。
在你的情況下,你應該使用這樣的東西。
from elasticsearch import Elasticsearch
es = Elasticsearch(
['5555555555bb0c30d1cba4e9e6.us-central1.gcp.cloud.es.io'],
http_auth=('username', 'password'),
scheme="https",
port=9243,
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.