文档
API 文档
节点 API

安装

它在 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 查询将记录到控制台。


Apache 2.0 2024 © Joseph McElroy。
需要帮助?加入 Discord