alicloud-ai-search-opensearch
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCategory: provider
分类:服务提供商
OpenSearch Vector Search Edition
OpenSearch向量搜索版
Use the ha3engine SDK to push documents and execute HA/SQL searches. This skill focuses on API/SDK usage only (no console steps).
使用ha3engine SDK推送文档并执行HA/SQL搜索。本技能仅聚焦于API/SDK的使用(不含控制台操作步骤)。
Prerequisites
前提条件
- Install SDK (recommended in a venv to avoid PEP 668 limits):
bash
python3 -m venv .venv
. .venv/bin/activate
python -m pip install alibabacloud-ha3engine- Provide connection config via environment variables:
- (API domain)
OPENSEARCH_ENDPOINT OPENSEARCH_INSTANCE_IDOPENSEARCH_USERNAMEOPENSEARCH_PASSWORD- (data source name)
OPENSEARCH_DATASOURCE - (primary key field name)
OPENSEARCH_PK_FIELD
- 安装SDK(推荐在虚拟环境venv中安装,以避免PEP 668限制):
bash
python3 -m venv .venv
. .venv/bin/activate
python -m pip install alibabacloud-ha3engine- 通过环境变量提供连接配置:
- (API域名)
OPENSEARCH_ENDPOINT OPENSEARCH_INSTANCE_IDOPENSEARCH_USERNAMEOPENSEARCH_PASSWORD- (数据源名称)
OPENSEARCH_DATASOURCE - (主键字段名称)
OPENSEARCH_PK_FIELD
Quickstart (push + search)
快速入门(推送+搜索)
python
import os
from alibabacloud_ha3engine import models, client
from Tea.exceptions import TeaException, RetryError
cfg = models.Config(
endpoint=os.getenv("OPENSEARCH_ENDPOINT"),
instance_id=os.getenv("OPENSEARCH_INSTANCE_ID"),
protocol="http",
access_user_name=os.getenv("OPENSEARCH_USERNAME"),
access_pass_word=os.getenv("OPENSEARCH_PASSWORD"),
)
ha3 = client.Client(cfg)
def push_docs():
data_source = os.getenv("OPENSEARCH_DATASOURCE")
pk_field = os.getenv("OPENSEARCH_PK_FIELD", "id")
documents = [
{"fields": {"id": 1, "title": "hello", "content": "world"}, "cmd": "add"},
{"fields": {"id": 2, "title": "faq", "content": "vector search"}, "cmd": "add"},
]
req = models.PushDocumentsRequestModel({}, documents)
return ha3.push_documents(data_source, pk_field, req)
def search_ha():
# HA query example. Replace cluster/table names as needed.
query_str = (
"config=hit:5,format:json,qrs_chain:search"
"&&query=title:hello"
"&&cluster=general"
)
ha_query = models.SearchQuery(query=query_str)
req = models.SearchRequestModel({}, ha_query)
return ha3.search(req)
try:
print(push_docs().body)
print(search_ha())
except (TeaException, RetryError) as e:
print(e)python
import os
from alibabacloud_ha3engine import models, client
from Tea.exceptions import TeaException, RetryError
cfg = models.Config(
endpoint=os.getenv("OPENSEARCH_ENDPOINT"),
instance_id=os.getenv("OPENSEARCH_INSTANCE_ID"),
protocol="http",
access_user_name=os.getenv("OPENSEARCH_USERNAME"),
access_pass_word=os.getenv("OPENSEARCH_PASSWORD"),
)
ha3 = client.Client(cfg)
def push_docs():
data_source = os.getenv("OPENSEARCH_DATASOURCE")
pk_field = os.getenv("OPENSEARCH_PK_FIELD", "id")
documents = [
{"fields": {"id": 1, "title": "hello", "content": "world"}, "cmd": "add"},
{"fields": {"id": 2, "title": "faq", "content": "vector search"}, "cmd": "add"},
]
req = models.PushDocumentsRequestModel({}, documents)
return ha3.push_documents(data_source, pk_field, req)
def search_ha():
# HA query example. Replace cluster/table names as needed.
query_str = (
"config=hit:5,format:json,qrs_chain:search"
"&&query=title:hello"
"&&cluster=general"
)
ha_query = models.SearchQuery(query=query_str)
req = models.SearchRequestModel({}, ha_query)
return ha3.search(req)
try:
print(push_docs().body)
print(search_ha())
except (TeaException, RetryError) as e:
print(e)Script quickstart
脚本快速入门
bash
python skills/ai/search/alicloud-ai-search-opensearch/scripts/quickstart.pyEnvironment variables:
OPENSEARCH_ENDPOINTOPENSEARCH_INSTANCE_IDOPENSEARCH_USERNAMEOPENSEARCH_PASSWORDOPENSEARCH_DATASOURCE- (optional, default
OPENSEARCH_PK_FIELD)id - (optional, default
OPENSEARCH_CLUSTER)general
Optional args: , , .
--cluster--hit--querybash
python skills/ai/search/alicloud-ai-search-opensearch/scripts/quickstart.py环境变量:
OPENSEARCH_ENDPOINTOPENSEARCH_INSTANCE_IDOPENSEARCH_USERNAMEOPENSEARCH_PASSWORDOPENSEARCH_DATASOURCE- (可选,默认值为
OPENSEARCH_PK_FIELD)id - (可选,默认值为
OPENSEARCH_CLUSTER)general
可选参数:, , 。
--cluster--hit--querySQL-style search
SQL风格搜索
python
from alibabacloud_ha3engine import models
sql = "select * from <indexTableName>&&kvpair=trace:INFO;formatType:json"
sql_query = models.SearchQuery(sql=sql)
req = models.SearchRequestModel({}, sql_query)
resp = ha3.search(req)
print(resp)python
from alibabacloud_ha3engine import models
sql = "select * from <indexTableName>&&kvpair=trace:INFO;formatType:json"
sql_query = models.SearchQuery(sql=sql)
req = models.SearchRequestModel({}, sql_query)
resp = ha3.search(req)
print(resp)Notes for Claude Code/Codex
针对Claude Code/Codex的注意事项
- Use for add/delete updates.
push_documents - Large query strings (>30KB) should use the RESTful search API.
- HA queries are fast and flexible for vector + keyword retrieval; SQL is helpful for structured data.
- 使用进行新增/删除更新。
push_documents - 超过30KB的大型查询字符串应使用RESTful搜索API。
- HA查询在向量+关键词检索中快速且灵活;SQL则对结构化数据处理有帮助。
Error handling
错误处理
- Auth errors: verify username/password and instance access.
- 4xx on push: check schema fields and alignment.
pk_field - 5xx: retry with backoff.
- 认证错误:验证用户名/密码和实例访问权限。
- 推送时出现4xx错误:检查schema字段与是否匹配。
pk_field - 5xx错误:通过退避策略重试。
References
参考资料
-
SDK package:
alibabacloud-ha3engine -
Demos: data push and HA/SQL search demos in OpenSearch docs
-
Source list:
references/sources.md
- SDK包:
alibabacloud-ha3engine - 示例:OpenSearch文档中的数据推送及HA/SQL搜索示例
- 来源列表:
references/sources.md