You need to enable JavaScript to run this app.
云搜索服务

云搜索服务

复制全文
通过 Python 连接实例
通过 Python 连接 OpenSearch 实例
复制全文
通过 Python 连接 OpenSearch 实例

本文介绍如何使用 Python 语言连接 OpenSearch 实例,并为您提供示例代码和注意事项。

准备工作

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

安装 OpenSearch Python 客户端及依赖

安装 OpenSearch Python 客户端及依赖的命令如下:

pip install opensearch-py
pip install urllib3

连接 HTTP 实例

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

from opensearchpy import OpenSearch
from opensearchpy.connection import Urllib3HttpConnection
import socket
from urllib3.connection import HTTPConnection

HTTPConnection.default_socket_options =  [
        (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),
        (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
        (socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 300),
        (socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5)
    ]
# 创建 OpenSearch 客户端连接。
client = OpenSearch(
        hosts=[
            {
                'host': "{实例访问域名}",
                'port': "9200",
            }
        ],
        scheme="http",
        http_auth=('admin', '{admin用户密码}'),
        connection_class=Urllib3HttpConnection
)

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

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

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

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

连接 HTTPS 实例

使用证书

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

from opensearchpy import OpenSearch
from opensearchpy.connection import Urllib3HttpConnection
import socket
from urllib3.connection import HTTPConnection

HTTPConnection.default_socket_options =  [
        (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),
        (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
        (socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 300),
        (socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5)
    ]
# 创建 OpenSearch 客户端连接。
client = OpenSearch(
        hosts=[
            {
                'host': "{实例访问域名}",
                'port': "9200",
            }
        ],
        scheme="https",
        http_auth=('admin', '{admin用户密码}'),
        ca_certs = '{证书保存路径}',
        connection_class=Urllib3HttpConnection
)

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

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

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

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

忽略证书

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

from opensearchpy import OpenSearch
from opensearchpy.connection import Urllib3HttpConnection
import socket
from urllib3.connection import HTTPConnection

HTTPConnection.default_socket_options =  [
        (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),
        (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
        (socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 300),
        (socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5)
    ]
# 创建 OpenSearch 客户端连接。
client = OpenSearch(
        hosts=[
            {
                'host': "{实例访问域名}",
                'port': "9200",
            }
        ],
        scheme="https",
        http_auth=('admin', '{admin用户密码}'),
        use_ssl=True,
        verify_certs=False,
        ssl_assert_hostname=False,
        ssl_show_warn=False,
        connection_class=Urllib3HttpConnection
)

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

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

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

{'acknowledged': True, 'shards_acknowledged': True, 'index': 'custom-index'}
最近更新时间:2025.02.05 16:16:32
这个页面对您有帮助吗?
有用
有用
无用
无用