@elastic/app-search-javascript

中文文档
8.13.0发布于 2024/03/27Apache-2.0ESM + CJS近 30 天下载 21.1万

Elastic App 搜索 Api 的 Javascript 客户端

中文使用文档
文档目录24 节
  1. 目录
  2. 开始 QQ
  3. 从 CDN 安装
  4. 从国家预防机制安装
  5. 版本
  6. 浏览器支持
  7. 使用量
  8. 设置: 配置客户端和认证
  9. Swiftype.com App搜索用户 :
  10. 配置选项列表 :
  11. API 方法
  12. 正在测试
  13. 发展
  14. 节点
  15. Dev 服务器
  16. 构建
  17. 发布
  18. 问 题
  19. 如果我需要写手术呢?
  20. 我在哪里报告与客户的问题?
  21. 哪里可以多学点App Search?
  22. 我还能去哪找人帮忙?
  23. 贡献
  24. 许可证 QQ

Elastic App Search Logo

CircleCI buidl

用于构建优秀相关搜索体验的第一党JavaScript客户端 弹性 App 搜索。 。 。 .

目录


开始 QQ

从 CDN 安装

安装此客户端的最简单方式就是简单地包含从 日记 疾控网.

<script src="https://cdn.jsdelivr.net/npm/@elastic/[email protected]/dist/elastic_app_search.umd.js"></script>

这将使客户在全球通过以下方式获得服务:

window.ElasticAppSearch;

从国家预防机制安装

此软件包也可以安装 npm 或者说 yarn。 。 。 .

npm install --save @elastic/app-search-javascript

然后,可以将客户纳入您的项目如下:

// CommonJS
var ElasticAppSearch = require("@elastic/app-search-javascript");

// ES
import * as ElasticAppSearch from "@elastic/app-search-javascript";

版本

这个客户端在App Search同时被版本并发布.

为保证相容性,在相应的App Search执行的主要版本中使用此库的最新版本.

例如, App 搜索 7.3,使用时 7.3 本图书馆或以上,但不是 8.0。 。 。 .

如果你正在使用 SaaS 版本可在sourkype.com上查阅 app Search中,您应当使用客户端的7.5.x版本.

浏览器支持

该客户端与所有现代浏览器兼容.

请注意,此库取决于 获取 API。 。 。 .

这不受Internet Explorer的支持. 如果您需要向后兼容 对于 Internet Explorer , 您需要将获取 API 的内容进行多功能填充 喜欢 https://github.com/github/fetch (英语)。 。 。 .

使用量

设置: 配置客户端和认证

使用此客户端假设您已有实例 弹性 App 搜索 继续跑.

客户端使用 searchKey, (中文(简体) ), endpointBase,以及 engineName 参数.

var client = ElasticAppSearch.createClient({
  searchKey: "search-mu75psc5egt9ppzuycnc2mc3",
  endpointBase: "http://127.0.0.1:3002",
  engineName: "favorite-videos"
});

* 请注意,你只能使用 公共搜索密钥 在浏览器上的 Javascript 代码中。 默认情况下,您的账户应该有一个密钥前缀 search- 这是只读。 更多信息可在 文档。 。 。 .

Swiftype.com App搜索用户 :

使用时 SaaS 版本可在sourkype.com上查阅 在 App 搜索中,您可以使用您的 hostIdentifier 代替 endpointBase 参数. 这个 hostIdentifier 可在 全权证书 菜单.

var client = ElasticAppSearch.createClient({
  hostIdentifier: "host-c5s2mj",
  searchKey: "search-mu75psc5egt9ppzuycnc2mc3",
  engineName: "favorite-videos"
});

配置选项列表 :

选项需求说明
主机标识符没有 主机标识符,应从 host-。要求,除非明确设置 endpointBase
搜索键没有 公共搜索密钥。它应该从 search-。 。 。 .

注:这不是 技术 在99%的案例中应该提供这种服务。 不提供此功能有一个小边例,主要用于内部的 App Search 用途,可以将此功能放入其中以杠杆化 App Search 的会话认证.
引擎Name对
结束点Base没有完全覆盖 App 搜索 API 端点的基础. 当代理 App 搜索 API 时有用,针对本地服务器,或自管理或云部署开发. 例如,“http://localhost:302”
缓存回复没有是否应当缓存 API 响应 。 默认 : true。 。 。 .
额外页眉没有在所有 API 请求中将转换为标题名和值的密钥和值对象

API 方法

这个客户端是Elastic App Search API的稀薄接口. 请求和答复的更多细节可以是: 发现于 文档。 。 。 .

搜索中

对于查询术语 lion,搜索呼叫构建如下:

var options = {
  search_fields: { title: {} },
  result_fields: { id: { raw: {} }, title: { raw: {} } }
};

client
  .search("lion", options)
  .then(resultList => {
    resultList.results.forEach(result => {
      console.log(`id: ${result.getRaw("id")} raw: ${result.getRaw("title")}`);
    });
  })
  .catch(error => {
    console.log(`error: ${error}`);
  });

请注意: options 支持在此列出的所有选项 : https://swiftype.com/documentation/app-search/guides/search (中文(简体) )。 。 。 .

除了上述得到支持的备选方案外,我们还支持以下领域:

名称类型说明
断开功能矩阵 [标]一组字段名称 。 这里列出的每个字段也必须作为字段的一面提供 facet 字段。 它表示一面应被视作相去不远. 在返回解开方位的计数时,计数将返回,仿佛该字段没有应用过滤器,即使使用了.
解析功能分析矩阵 [标]与《公约》一并使用 disjunctiveFacets 参数。 除非此处指定, 查询将在分析板上被标记为“ Facet- Only ” .

回应

搜索方法返回包裹在 a 中的响应 ResultList 类型 :

ResultList {
  rawResults: [], // List of raw `results` from JSON response
  rawInfo: { // Object wrapping the raw `meta` property from JSON response
    meta: {}
  },
  results: [ResultItem], // List of `results` wrapped in `ResultItem` type
  info: { // Currently the same as `rawInfo`
    meta: {}
  }
}

ResultItem {
  getRaw(fieldName), // Returns the HTML-unsafe raw value for a field, if it exists
  getSnippet(fieldName) // Returns the HTML-safe snippet value for a field, if it exists
}

查询建议

var options = {
  size: 3,
  types: {
    documents: {
      fields: ["name"]
    }
  }
};

client
  .querySuggestion("cat", options)
  .then(response => {
    response.results.documents.forEach(document => {
      console.log(document.suggestion);
    });
  })
  .catch(error => {
    console.log(`error: ${error}`);
  });

可以同时使用 multiSearch 方法.

寻找术语 lion 财务报告和审定财务报表 tiger,搜索呼叫构建如下:

var options = {
  search_fields: { name: {} },
  result_fields: { id: { raw: {} }, title: { raw: {} } }
};

client
  .multiSearch([{ query: "node", options }, { query: "java", options }])
  .then(allResults => {
    allResults.forEach(resultList => {
      resultList.results.forEach(result => {
        console.log(
          `id: ${result.getRaw("id")} raw: ${result.getRaw("title")}`
        );
      });
    });
  })
  .catch(error => {
    console.log(`error: ${error}`);
  });

点击通过跟踪

client
  .click({
    query: "lion",
    documentId: "1234567",
    requestId: "8b55561954484f13d872728f849ffd22",
    tags: ["Animal"]
  })
  .catch(error => {
    console.log(`error: ${error}`);
  });

点击通道可以通过绑定跟踪 client.click 命令点击单个搜索结果链接上的事件.

以下例子说明如何通过注释与类和数据属性的链接来公开执行.

document.addEventListener("click", function(e) {
  const el = e.target;
  if (!el.classList.contains("track-click")) return;

  client.click({
    query: el.getAttribute("data-query"),
    documentId: el.getAttribute("data-document-id"),
    requestId: el.getAttribute("data-request-id"),
    tags: [el.getAttribute("data-tag")]
  });
});
<a
  href="/items/1234567"
  class="track-click"
  data-request-id="8b55561954484f13d872728f849ffd22"
  data-document-id="1234567"
  data-query="lion"
  data-tag="Animal"
>
  Item 1
</a>

正在测试

此工程的规格 节点重放 以获取回应.

然后对照Jest的快照检查答复.

为了获取新的回复并更新快照,运行:

nvm use
REPLAY=record npm run test -u

进行测试:

nvm use
npm run test

发展

节点

您可能想要安装节点版本管理器, 如 nvm .

我们依赖于定义于 .nvmrc (英语)。 。 。 .

用 nvm 安装和使用正确的节点版本 :

nvm install

Dev 服务器

安装依赖性 :

nvm use
npm install

在 dist 目录 :

# This will create files in the `dist` directory
npm run build

添加一个 index.html 转到您的文件 dist 目录

<html>
  <head>
    <script src="elastic_app_search.umd.js"></script>
  </head>
  <body>

  </body>
</html>

运行 Dev 服务器 :

# This will serve files in the `dist` directory
npm run dev

导航到http://127.0.0.1:8080并通过浏览器Dev Console执行JavaScript命令.

构建

nvm use
npm run build

发布

nvm use
npm run publish

问 题

如果我需要写手术呢?

AppSearch 拥有一个第一当事方 节点.js 客户端支持像索引一样的写入操作.

我在哪里报告与客户的问题?

如果有东西不起作用,请打开 问题。 。 。 .

你最好的赌注是读 文档。 。 。 .

我还能去哪找人帮忙?

你可以去检查 弹性 App 搜索社区讨论论坛。 。 。 .

贡献

我们欢迎该项目的捐助者。 在你开始前, 几个笔记...

  • 在启动拉动请求前,请创建一个问题 讨论您提案的范围。 。 。 .
  • 请酌情写出简单的代码和简明文档.

许可证 QQ

Apache 2.0 (英语) © 弹性

谢谢大家 捐助者来啊!

版本与发布记录

@elastic/app-search-javascript 共发布 28 个版本,首次发布于 2019/08/17;过去 12 个月发布了 0 个版本。

版本发布日期距今
8.13.0latest2024/03/272 年前
8.9.02023/07/273 年前
8.8.12023/05/313 年前
8.8.02023/05/313 年前
8.7.12023/05/113 年前
8.7.02023/03/313 年前

关于 @elastic/app-search-javascript 的常见问题

@elastic/app-search-javascript 是什么?

Elastic App 搜索 Api 的 Javascript 客户端

如何安装 @elastic/app-search-javascript?

在项目目录运行 npm install @elastic/app-search-javascript,或使用 pnpm add / yarn add / bun add。

@elastic/app-search-javascript 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/elastic__app-search-javascript 是否存在。

@elastic/app-search-javascript 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@elastic/app-search-javascript 可以商用吗?

@elastic/app-search-javascript 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@elastic/app-search-javascript 的下载量有多少?

根据 npm 官方下载统计,@elastic/app-search-javascript 在 2026/10/13 – 2026/11/11 这 30 天内被下载 211,329 次,日均约 7,044 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@elastic/app-search-javascript 还在维护吗?

最新版本 8.13.0 发布于 2024/03/27(2 年前);至今共发布 28 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/08/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。