You need to enable JavaScript to run this app.
导航

通过 Python 连接实例

最近更新时间2024.04.07 19:15:32

首次发布时间2023.08.24 17:53:35

Elasticsearch 官方和社区推出了各个语言版本的 SDK,以方便用户使用。本文介绍如何使用 Python 语言连接火山引擎 ESCloud 实例,并为您提供示例代码和注意事项。

准备工作

  • 提前创建火山引擎 ESCloud 实例,并确保为正常运行状态。创建实例的具体操作,请参见创建实例
  • 确保运行 Python 代码的服务器与火山引擎 ESCloud 实例网络互通。
    • 如果运行 Python 代码的服务器与火山引擎 ESCloud 实例在相同的私有网络 VPC 中,则可以通过实例的私网地址进行连接。连接前,需要确保 VPC 私网访问白名单(默认为 0.0.0.0/0)中已添加了服务器的私网 IP 地址。具体操作步骤,请参见配置实例私网 IP 白名单
    • 如果运行 Python 代码的服务器在公网环境下,则可以通过实例的公网地址进行连接。连接前,需要开启实例公网地址,并修改公网地址访问白名单,将服务器的公网 IP 地址加入白名单中。具体操作步骤,请参见开启实例公网访问配置实例公网 IP 白名单

安装 Elasticsearch Python 客户端

建议 Elasticsearch Python 客户端和火山引擎 ESCloud 实例的版本保持一致。
例如需要访问的 ESCloud 实例版本是7.10.2,则需要安装 7.10 版本的 Elasticsearch Python 客户端。
安装 Elasticsearch Python 客户端的命令如下:

pip install Elasticsearch==7.10

连接 HTTP 实例

该场景适用于连接访问方式为 HTTP 的 ESCloud 实例。
示例代码如下:

from elasticsearch import Elasticsearch

# 创建 Elasticsearch 客户端连接
es = Elasticsearch(['{实例访问地址}', '9200'],
                   http_auth=('{实例访问用户}', '{用户密码}')
                   )

# 创建索引,根据需要设置 settings、mappings,以及字段信息。
index_name = '{索引名称}'
index_body = {
    'settings': {
        'number_of_shards': 3,
        'number_of_replicas': 1
    },
    'mappings': {
        'properties': {
            'name': {
                'type': 'text'
            },
            'age': {
                'type': 'integer'
            }
        }
    }
}

response = es.indices.create(index=index_name, body=index_body)
print(response)

运行程序,返回如下类似信息:

{'acknowledged': True, 'shards_acknowledged': True, 'index': 'custom-index'}

连接 HTTPS 实例

使用证书

该场景适用于连接访问方式为 HTTPS 的 ESCloud 实例,且连接过程需要校验证书。
示例代码如下:

from elasticsearch import Elasticsearch
from ssl import create_default_context

# 创建 SSL 上下文并加载证书。
ssl_context = create_default_context(cafile='{证书路径}')

# 创建 Elasticsearch 客户端连接。
es = Elasticsearch(['{实例访问地址}', '9200'],
                   ssl_context=ssl_context,
                   scheme="https",
                   http_auth=('{实例访问用户}', '{用户密码}')
)

# 创建索引,根据需要设置 settings、mappings,以及字段信息。
index_name = '{索引名称}'
index_body = {
    'settings': {
        'number_of_shards': 3,
        'number_of_replicas': 1
    },
    'mappings': {
        'properties': {
            'name': {
                'type': 'text'
            },
            'age': {
                'type': 'integer'
            }
        }
    }
}

response = es.indices.create(index=index_name, body=index_body)
print(response)

运行程序,返回如下类似信息:

{'acknowledged': True, 'shards_acknowledged': True, 'index': 'custom-index'}

忽略证书

该场景适用于连接访问方式为 HTTPS 的 ESCloud 实例,且连接过程忽略证书。
示例代码如下:

from elasticsearch import Elasticsearch
import ssl

# 创建 SSL 上下文,并设置验证模式为 CERT_NONE,即忽略证书。
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE


# 创建 Elasticsearch 客户端连接。
es = Elasticsearch(['{实例访问地址}', '9200'],
                   ssl_context=ssl_context,
                   scheme="https",
                   http_auth=('{实例访问用户}', '{用户密码}')
)

# 创建索引,根据需要设置 settings、mappings,以及字段信息。
index_name = '{索引名称}'
index_body = {
    'settings': {
        'number_of_shards': 3,
        'number_of_replicas': 1
    },
    'mappings': {
        'properties': {
            'name': {
                'type': 'text'
            },
            'age': {
                'type': 'integer'
            }
        }
    }
}

response = es.indices.create(index=index_name, body=index_body)
print(response)

运行程序,返回如下类似信息:

{'acknowledged': True, 'shards_acknowledged': True, 'index': 'custom-index'}