通過SDK 調用召回引擎版實例進行數據檢索
代碼示例
# -*- coding: utf-8 -*-
from alibabacloud_ha3engine import models, client
from alibabacloud_tea_util import models as util_models
from Tea.exceptions import TeaException, RetryError
def search():
Config = models.Config(
endpoint="ha-cn-7mz2ougaw02.ha.aliyuncs.com",
instance_id="ha-cn-7mz2ougaw02",
protocol="http",
access_user_name="user",
access_pass_word="111111"
)
# 如用戶請求時間較長. 可通過此配置增加請求等待時間. 單位 ms
# 此參數可在 search_with_options 方法中使用
runtime = util_models.RuntimeOptions(
connect_timeout=5000,
read_timeout=10000,
autoretry=False,
ignore_ssl=False,
max_idle_conns=50
)
# 初始化 Ha3Engine Client
ha3EngineClient = client.Client(Config)
optionsHeaders = {}
try:
# 示例1: 直接使用 ha 查詢串進行搜索.
# =====================================================
query_str = "config=hit:4,format:json,fetch_summary_type:pk,qrs_chain:search&&query=id:<pk>&&cluster=general"
haSearchQuery = models.SearchQuery(query=query_str)
# method可不指定,僅支持GET和POST請求方式, 默認為GET方式
haSearchRequestModel = models.SearchRequestModel(headers=optionsHeaders, query=haSearchQuery, method='POST')
hastrSearchResponseModel = ha3EngineClient.search(haSearchRequestModel)
print(hastrSearchResponseModel)
# =====================================================
# 示例 2: 使用構造的查詢進行 ha 查詢.
# =====================================================
# 設置聚合打散子句
DistinctClauses = []
# 設置統計子句配置對象
aggregateClauses = []
haQueryAggregateClause = models.HaQueryAggregateClause(
group_key="cate_id", # 設置group_key
agg_fun="count()", # 設置agg_fun
range="0~10", # 設置分段統計
max_group="5", # 設置最大返回組數
agg_filter="cate_id=1", # 設置agg_filter
agg_sampler_thres_hold="5", # 設置采樣閾值
agg_sampler_step="5", # 設置采樣步長
)
# 添加Aggregate對象參數, 支持設置一個或多個統計字段示例
aggregateClauses.append(haQueryAggregateClause)
# 定義Config對象,用于設定config子句參數,分頁或數據返回格式等.
CustomConfig = dict()
CustomConfig.__setitem__("no_summary", "yes")
CustomConfig.__setitem__("qrs_chain", "search")
haQueryconfig = models.HaQueryconfigClause(
# 設置 查詢起始位置
start="1",
# 設置查詢頁返回數量
hit="10",
# Format目前支持返回 XML,JSON, protobuf 等格式
format="JSON",
# 設置自定義 config 參數.
custom_config=CustomConfig
)
# 設置sort條件
haQuerySortClauseList = []
haQuerySortClause = models.HaQuerySortClause(
# 設置排序id字段
sort_key="id",
# 設置排序配置: + 為升序, - 為降序.
sort_order="+"
)
haQuerySortClauseList.append(haQuerySortClause)
# haQuery 中 Kvpairs 為 dict 類型. 具體 key 范圍. 請參詢開飯文檔.
haKvpairs = dict()
haKvpairs.__setitem__("uniqfield", "cate_id")
# 設置聚合打散子句
DistinctClauses = []
dist = models.HaQueryDistinctClause(
# 設置dist_key
dist_key="cate_id",
# 設置dist_count
dist_count="1",
# 設置dist_times
dist_times="1",
# 設置reserved
reserved="false",
# 設置過濾條件
dist_filter="cate_id<=3",
# 設置update_total_hit
update_total_hit="false",
# 設置grade
grade="1.2",
)
# 添加Distinct對象參數, 支持一個或者多個.dist內容需為 unique.
DistinctClauses.append(dist)
# 定義 自定義 query Config 子句.
CustomQuery = dict()
CustomQuery.__setitem__("searcher_cache", "use:no")
haQuery = models.HaQuery(
# 設置查詢子句,為索引及查詢內容.
query="id:8148508889615505646",
# 設置請求集群名稱.
cluster="general",
# 設置 config 子句參數
config=haQueryconfig,
# 設置查詢過濾條件
# 支持設置一個或多個 filter 參數.請使用 AND | OR 對多個 filter 進行連接.
# 比較支持: '=' | '>' | '<' | '<=' | '>=' | '!='
filter="id>100 AND id<=1000",
# 設置 aggregate 子句參數
aggregate=aggregateClauses,
# 設置 Kvpairs 子句參數
kvpairs=haKvpairs,
# 設置 sort 子句參數
sort=haQuerySortClauseList,
# 設置 distinct 子句參數
distinct=DistinctClauses,
custom_query=CustomQuery
)
searchQuery = models.SearchQuery(query=ha3EngineClient.build_ha_search_query(haQuery))
searchRequestModel = models.SearchRequestModel(optionsHeaders, searchQuery)
# 使用默認 運行時參數進行請求, method可不指定,僅支持GET和POST請求方式, 默認為GET方式,查詢query長度超過30K請使用POST請求
haStructResponseModel = ha3EngineClient.search(query=searchRequestModel, method='POST')
print(haStructResponseModel)
# 示例3: 直接使用 ha - sql 查詢串進行搜索.
# =====================================================
sql_str = "select * from <indexTableName>&&kvpair=trace:INFO;formatType:json"
sqlsearchQuery = models.SearchQuery(sql=sql_str)
sqlSearchRequestModel = models.SearchRequestModel(optionsHeaders, sqlsearchQuery)
# method可不指定,僅支持GET和POST請求方式, 默認為GET方式,查詢query長度超過30K請使用POST請求
sqlstrSearchResponseModel = ha3EngineClient.search(query=sqlSearchRequestModel, method='POST')
print(sqlstrSearchResponseModel)
# 示例4 : 直接使用 ha - sql 結構化進行搜索.
# =====================================================
sqlQueryKvpairs =dict()
sqlQueryKvpairs.__setitem__("trace", "INFO")
sqlQueryKvpairs.__setitem__("formatType", "full_json")
sqlQuery =models.SQLQuery(
query ="select * from odps",
kvpairs=sqlQueryKvpairs
)
searchQuery = models.SearchQuery(sql=ha3EngineClient.build_sqlsearch_query(sqlQuery))
searchRequestModel = models.SearchRequestModel(optionsHeaders, searchQuery)
# 使用默認 運行時參數進行請求, method可不指定,僅支持GET和POST請求方式, 默認為GET方式,查詢query長度超過30K請使用POST請求
sqlStructResponseModel = ha3EngineClient.search(query=searchRequestModel, method='POST')
print(sqlStructResponseModel)
except TeaException as e:
print(f"send request with TeaException : {e}")
except RetryError as e:
print(f"send request with Connection Exception : {e}")
文檔內容是否對您有幫助?