全部產品
Search
文件中心

OpenSearch:A/B Test

更新時間:Jul 13, 2024

為了讓使用者更加合理地使用、調試OpenSearch的各種演算法,上線A/B Test功能,方便業務在全量使用前可以分配一定比例的流量進行先驗,避免盲用帶來對線上業務的負面影響。A/B Test功能目前支援使用者對查詢分析基礎排序業務排序進行實驗配置。

使用介紹

一、配置A/B Test 的基本流程說明

為了最終的實驗指標更全面,在配置A/B Test之前建議先開通單擊行為採集資料。使用者初次使用A/B Test功能需要經過以下四個步驟才能完成具體實驗的配置上線:

1.進入A/B Test建立流程:

通過opensearch控制台左側導覽列:功能擴充---->A/B測試進入A/B測試介面,單擊“建立”即可進入A/B Test建立流程:

1

2.建立實驗組:

實驗組可以對查詢分析、基礎排序、策略排序以及類目預測進行實驗。實驗組名稱:實驗組名稱僅做展示使用,使用者可修改。實驗組名稱不允許超過 30 個字元。2

3.建立實驗:

實驗組建立好以後單擊“添加實驗”就可以在實驗組內建立具體的實驗了。每個實驗組裡面最多隻能建立20個實驗,其中最多隻能有10個實驗同時線上生效。3

3.1 實驗名稱:實驗名稱必須使用者自訂,不超過 30 個字元。43.2 添加配置:

使用者可選擇對查詢分析、基礎排序、業務排序進行配置。配置項彈框只支援使用者進行選擇已有的查詢分析規則、基礎排序、業務排序

在選取查詢分析類型與策略時:

  • 使用者選擇“自訂”時,候選項為使用者在當前應用下所建立的所有查詢分析

  • 使用者選擇“線上一致”時表示此處不做任何配置同線上邏輯保持一致,即不是當前實驗要測試的內容

在選擇排序策略類型與策略時:

排序策略類型與策略也是同樣的邏輯,考慮到狀態為“配置中”的策略可能會被使用者無意識的編輯,從而影響線上A/B測試效果,所以排序策略狀態中僅支援“發行”且不可更改。5

3.3 實驗流量:實驗流量最小粒度為1%,同一情境的同一實驗組內線上的所有實驗流量總和應該≤100%。6

4.實驗組建立完成:

當實驗配置完成後,單擊“下一步”,完成配置,單擊“完成”,返回A/B測試首頁:7剛剛配置的實驗組處於“待測試狀態”:8

5.啟動測試:

在實驗組建立成功後,在對應的實驗組“操作”一欄單擊“啟動測試”,測試中的實驗組狀態處於“測試中”:9

6.A/B Test實驗生效:

控制台開通A/B Test功能,並配置好實驗之後,如果想讓實驗對線上的查詢生效,需要在查詢中指定abtest參數。abtest參數主要包含2個部分:scene_tag和flow_divider。a

請求的URL:

/v3/openapi/apps/160029126/search?query=query=default:'深圳'&&config=start:0,hit:10,format:fulljson&abtest=scene_tag:test_1,flow_divider:123456
  • scene_tag:實驗組名稱(原實驗情境標識),使用者在控制台建立一個或多個實驗組後,將其中一個實驗組的名稱設定為 scene_tag的參數值(如上圖所示),最終實驗流量會進到該實驗組名稱下面對應的各個實驗中。

  • flow_divider該參數必須指定。表示:後端系統對該值進行hash將使用者的查詢流量分配到不同的實驗中,分配的比例為使用者在控制台上配置的實驗流量比例。flow_divider推薦為終端使用者的ID,如果沒有的話可以用終端使用者的裝置ID或者IP地址。

注意:

  • 如果通過SDK訪問OpenSearch服務,當scene_tag和flow_divider不包含空格和標點時,只需要調用對應的介面即可,scene_tag和flow_divider無需encode處理;若包含標點,則scene_tag和flow_divider也需要先encode. 詳細請參考“實戰樣本”。

  • 如果通過API訪問OpenSearch服務,scene_tag和flow_divider的值需要urlencode,最終傳給OpenSearch的abtest參數格式為abtest=urlencode(scene_tag:urlencode(\$scene),flow_divider:urlencode(\$value)),其中urlencode為URL編碼函數。

  • 若您還有疑問,可以參考A/B測試常見問題文檔。

二、 實驗組和實驗管理

實驗組管理:

建立好實驗組和實驗後,會在A/B測試首頁中產生對應的實驗組列表:10使用者可對已建立的實驗組進行基礎的管理操作 :

1.啟動測試:

使用者可以對狀態為“待測試”或“已停止”的實驗組進行“啟動測試”。

2.停止測試:

使用者可以對狀態為“測試中”的實驗組進行“停止測試”。

3.刪除實驗組:

使用者可在A/B測試首頁對任意實驗組進行“刪除”操作。

實驗管理:

建立好實驗組和實驗後,會在實驗組詳情頁中產生對應的實驗列表:11實驗列表內展現了實驗名稱、查詢分析類型與策略、排序策略類型與策略、流量佔比和操作等基本資料:12使用者可對已建立的實驗進行基礎的管理操作 :

  1. 編輯實驗:支援對實驗名稱、實驗配置、實驗流量進行修改。

  2. 刪除實驗:實驗被刪除後,系統將不再保留其實驗配置資訊,並且線上不再生效。

  3. 白名單:

為了將特定flow_divider指定到特定的實驗,從而方便查看特定實驗的搜尋效果,opensearch提供白名單功能,可將flow_divider添加到特定的實驗:13

三、A/B Test 實驗組詳情

行為資料狀態

當您成功建立實驗組之後,進入實驗組詳情頁,行為資料在列表中呈現的狀態可能有以下幾種:

  • 未開通:當前應用無行為資料上傳(詳情請點擊此處

  • 已開通無資料:當前應用已開通行為資料擷取,但一直未接收到資料

  • 資料異常:當前行為資料經品質檢驗發現問題較多不可信

實驗組狀態

當您成功建立實驗組之後,進入實驗組詳情頁,實驗組在列表中呈現的狀態可能有以下幾種:

  • 待測試:當前實驗組的目前狀態,非歷史狀態,因為使用者可能之前進行過測試或停止過測試

  • 測試中:指當前實驗組已在控制台啟動了測試,且顯示啟動測試時間距離當天的天數

  • 已停止:已停止,累計測試時間是指從初次開機測試到最後停止測試時間範圍內,真正在測試的累計的天數,中間停止的時間不算

資料統計

從A/B Test實驗組列表頁單擊“詳情”或者直接從應用下的功能表列內單擊“統計報表-A/B測試報表”即可進入實驗組詳情頁面,在資料統計頁面中查看A/B測試實驗資料報表,控制台查看的資料是T+1天的(假設今天測試,明天才能在控制台看到結果)。新控制台改版之後合并了核心資料指標對比頁和具體指標資料表格,使用者可通過選擇“指標類型”下拉框內容來查看相應的指標。核心指標資料也從原有的資料形式更換成了折線統計圖的形式更直觀的呈現,預設展現的是最近1天的指標資料。使用者可在頁面內的實驗選擇下拉框內勾選多個要對比資料的實驗。目前的可統計的核心指標有搜尋PV、搜尋UV、無結果率、人均搜尋PV、曝光次數、Query數、人均Query數。

  • 注意:當日的A/B測試報表資料可在次日上午8點後查看,即使當日停止了A/B測試,次日也可查看實驗停止前的報表資料。

實戰樣本

某電商產品線上使用OpenSearch查詢有以下兩種需求:

  • 第一種需求:來自終端客戶進行的商品關鍵詞搜尋流量,查詢方式為:

query=config=format:fulljson&&query=default:'寶寶奶粉'&&sort=price

  • 第二種需求:來自內部其他業務的調用流量,查詢方式為:

query=config=format:fulljson&&query=cat_id:'1'|'2'|'3'&&sort=timestamp

現在該使用者希望在第一種需求下,按照終端使用者會員ID分流進行A/B Test,對比幾種排序運算式或者類目預測模型或者查詢分析規則的效果。那麼這個使用者的配置步驟如下:

1.在控制台A/B Test功能裡建立實驗組和實驗。其中在建立實驗組的步驟中,將實驗組名稱填寫為 user_search 代表第一種需求:

14

2.在查詢中設定A/B Test參數。由於在控制台已填寫實驗組為 user_search,所以在需求一的查詢中應該設定參數scene_tag:user_search,flow_divider:xxxx(終端使用者會員ID的值)。

2.1 SDK方式( 如下是java sdk用法,php sdk用法類似):15aliyun-sdk-opensearch-3.4.1(java版)、opensearch-sdk-php-3.3.0(php版)。

2.2 API方式:

i. query=config=format:fulljson&&query=default:'寶寶奶粉'&&sort=-price&abtest=scene_tag:user_search,flow_divider:%e5%bc%a0%e4%b8%89

說明

注意:這裡對abtest的子參數scene_tag和flow_divider的value都做了urlencode)。

ii. 對請求中的每個參數(即query, sort, abtest)的value做urlencode:

query=config%3dformat%3afulljson&&query%3ddefault%3a%27%e5%ae%9d%e5%ae%9d%e5%a5%b6%e7%b2%8

3.以上配置完畢後,就可以實現對第一種情境的流量進行A/B Test的需求了。

業務營運報表

介面

可以通過【功能擴充—->A/B測試】,“統計報表”進入A/B測試的統計報表頁面;

2

也可以直接在“統計報表—->A/B測試報表”裡查:

3

注意:A/B測試報表對應指標介紹可點擊此處進行查看。