安装
它在 npm 上以 @searchkit/api
的形式提供。
npm install @searchkit/api@latest
然后在您的项目中导入它
import Client from "@searchkit/api";
用法
Node 客户端处理传入的 instantsearch 请求,并将它们转换为 Elasticsearch 查询。使用响应,它将其转换为 instantsearch 可以理解的格式。
该客户端以简化与多个 Node 服务器框架集成的的方式构建。
在 Searchkit API 文档 中阅读有关如何配置 Searchkit 的更多信息。
import Client from "@searchkit/api";
// SearchkitConfig is the configuration object that is used to configure the client
const client = Client({
connection: {
host: "https://commerce-demo.es.us-east4.gcp.elastic-cloud.com:9243",
apiKey: "a2Rha1VJTUJMcGU4ajA3Tm9fZ0Y6MjAzX2pLbURTXy1hNm9SUGZGRlhJdw==", // optional apiKey
headers: { // optional headers sent to Elasticsearch. Useful for basic auth
"Authorization", 'Basic ' + Buffer.from(username + ":" + password).toString('base64'),
"my-custom-header": "my-custom-value"
},
},
search_settings: {
highlight_attributes: ["title", "actors"],
search_attributes: ["title", "actors"],
result_attributes: ["title", "actors", "poster", "year"],
facet_attributes: [
"type",
{ attribute: "actors", field: "actors.keyword" },
"rated",
{ attribute: "imdbrating", type: "numeric" },
{ attribute: "metascore", type: "numeric" },
],
},
});
HandleRequest
函数
该 handleRequest
方法用于处理来自浏览器的传入 REST 请求。它接收多个 instantsearch SearchRequest
对象并返回多个 instantsearch SearchResponse
对象。
用法
// function to handle the incoming request
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
// invokes handleRequest passing in the request body
// containing the search requests
const results = await client.handleRequest(req.body, {
// optional functions to adjust the Elasticsearch query
// see Request Options below
// example of modifying the query that performs the organic match query
getQuery(query, search_attributes, config) {
return {
combined_fields: {
query: query,
fields: search_attributes.map((attr) => (typeof attr === 'string' ? attr : attr.field))
}
}
},
// example of adding a base filter to the query
getBaseFilters: () => {
return [
{
bool: {
must: {
term: {
status: {
value: "published",
},
},
},
},
},
];
}
});
// returning back the results to the browser
res.send(results);
}
参数
该 handleRequest
函数接收以下参数
- body - 包含搜索请求的请求体。
- RequestOptions - 可选。RequestOptions 对象用于在发送到 Elasticsearch 之前更改请求和响应。您可以在 Searchkit API 文档 中阅读有关这些选项的更多信息。
调试模式
客户端可以在调试模式下运行以帮助调试 Elasticsearch 查询。要在调试模式下运行客户端,请在 Client
函数中将 debug
标志设置为 true
。
当您通过 getQuery
覆盖查询或通过 getBaseFilters
提供基本过滤器并希望查看执行到 Elasticsearch 的 Elasticsearch 查询时,这很有帮助。
const client = Client({
// search_settings configuration
connection: {
// ...
},
search_settings: {
search_attributes: ["title", "plot"],
// ...
}
}, { debug: true });
当客户端在调试模式下运行时,Elasticsearch 查询将记录到控制台。