本文介绍如何使用 Python 语言连接 ES 实例,并为您提供示例代码和注意事项。
建议 Elasticsearch Python 客户端和 ES 实例的版本保持一致。
例如需要访问的 ES 实例版本是7.10.2,则需要安装 7.10 版本的 Elasticsearch Python 客户端。
安装 Elasticsearch Python 客户端的命令如下:
pip install Elasticsearch==7.10
pip install urllib3
该场景适用于连接访问方式为 HTTP 的 ES 实例。
示例代码如下:
from elasticsearch import Elasticsearch
from elasticsearch.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)
]
# 创建 Elasticsearch 客户端连接。
client = Elasticsearch(
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 的 ES 实例,且连接过程需要校验证书。
示例代码如下:
from elasticsearch import Elasticsearch
from elasticsearch.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)
]
# 创建 Elasticsearch 客户端连接。
client = Elasticsearch(
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 的 ES 实例,且连接过程忽略证书。
示例代码如下:
from elasticsearch import Elasticsearch
from elasticsearch.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)
]
# 创建 Elasticsearch 客户端连接。
client = Elasticsearch(
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'}