框架描述
發現網上Algolia這塊的資料較少,就花了點時間從官網上整理了下,總結了幾項常用的功能用法。
現在比較有名的Algolia提供了雲搜索的服務。具體辦法是我們將數據庫的信息以JSON的格式上傳到Algolia服務器,然后通過相應的API進行搜索,搜索可以是前端也可以是后端。這里描述的JavaScript的用法,不僅高效,而且對用戶友好。Algolia的免費許可允許上傳10,000條JSON數據,每月允許100,000次操作(包括上傳和搜索),還是相當不錯的。
准備工作
前往官網注冊完賬號之后,我們就可以登錄dashboard控制和管理我們的數據了。

在上圖中左邊第三個鑰匙按鈕中,可以找到我們需要的API Keys

我們需要的是Application ID,Search-Only API Key和Admin API Key。
注意:Admin API KEY一定不要放在js里,因為這個key是用來上傳,刪除和操作我們的雲端數據的,所以一定要保管好。
我們還需要創建索引庫,用來存放我們的Json數據

點擊Create Index 創建一個索引庫,到這里准備工作就完成了
CURD操作
Add Objects
//algoliasearch的一次個參數傳入賬號提供的Application ID , 第二個傳入Admin API Key
var client = algoliasearch('Application ID', 'Admin API Key');
//初始化一個索引庫
var index = client.initIndex('index Name');
//聲明Json數組
var objects = [{
firstname: 'Jimmie',
lastname: 'Barninger'
}, {
firstname: 'Warren',
lastname: 'Speach'
}];
//add objects
index.addObjects(objects, function(err, content) {
if (err) {
console.error(err);
}
});
響應的Json數據
{ "objectIDs": [ "myObjectID1", "myObjectID2" ], "taskID": 678, }
Update Objects
//准備的Json數據 var objects = [{ firstname: 'Warren', lastname: 'XX', objectID: 'objectID' }]; //algoliasearch的一次個參數傳入賬號提供的Application ID , 第二個傳入Admin API Key var client = algoliasearch('Application ID', 'Admin API Key'); //初始化一個索引庫 var index = client.initIndex('index Name'); index.partialUpdateObjects(objects, function(err, content) { if (err) throw err; alert("success!"); console.log(content); });
Delete Objects
//algoliasearch的一次個參數傳入賬號提供的Application ID , 第二個傳入Admin API Key var client = algoliasearch('Application ID', 'Admin API Key'); //初始化一個索引庫 var index = client.initIndex('index Name'); index.deleteObjects(['Object-Id'], function(err, content) { if (err) throw err; console.log(content); });
Search Index
//algoliasearch的一次個參數傳入賬號提供的Application ID , 第二個傳入Search-Only API Key var client = algoliasearch('Application ID', 'Search-Only API Key'); //初始化一個索引庫 var index = client.initIndex('index Name'); index.search({ query: 'XX' }, function searchDone(err, content) { if (err) throw err; console.log(content.hits); } );
響應的Json數據
{ "hits": [ { "firstname": "Jimmie", "lastname": "Barninger", "objectID": "433", "_highlightResult": { "firstname": { "value": "<em>Jimmie</em>", "matchLevel": "partial" }, "lastname": { "value": "Barninger", "matchLevel": "none" }, "company": { "value": "California <em>Paint</em> & Wlpaper Str", "matchLevel": "partial" } } } ], "page": 0, "nbHits": 1, "nbPages": 1, "hitsPerPage": 20, "processingTimeMS": 1, "query": "jimmie paint", "params": "query=jimmie+paint&attributesToRetrieve=firstname,lastname&hitsPerPage=50" }
更新日志
- 2019-02-28 v1.0
