Elasticsearch 搜索 UI 组件

Searchkit 是一个开源库,可帮助您使用 Elasticsearch 构建出色的搜索体验。

适用于 React、Vue、Angular 等。

import Searchkit from "searchkit"
import Client from '@searchkit/instantsearch-client'
import { InstantSearch, SearchBox, Hits, RefinementList, Pagination, RangeInput } from 'react-instantsearch';
 
const sk = new Searchkit({
  connection: {
    host: 'https://127.0.0.1:9200',
    // cloud_id: "elastic-cloud-id",
    auth: {
      username: "elastic",
      password: "changeme"
    }
  },
  search_settings: {
    search_attributes: [{ field: 'title', weight: 3 }, 'actors', 'plot'],
    result_attributes: ['title', 'actors', 'poster', 'plot'],
    highlight_attributes: ['title'],
    facet_attributes: [
      { attribute: 'actors', field: 'actors.keyword', type: 'string' },
      { attribute: 'imdbrating', type: 'numeric', field: 'imdbrating' }
    ]
  }
})
 
const searchClient = Client(sk);
 
export default function Web() {
    return (
      <InstantSearch
        indexName="imdb_movies"
        searchClient={searchClient}
      >
        <SearchBox />
        <div className="left-panel">
          <RefinementList attribute="actors" searchable={true} limit={10} />
          <RangeInput attribute="imdbrating" />
        </div>
        <div className="right-panel">
          <Hits />
          <Pagination />
        </div>
      </InstantSearch>
    );
}
 

快速构建搜索体验!

Searchkit 使用 instantsearch,这意味着您可以使用 instantsearch 库来构建您的搜索体验。

Algolia 的 Polyfill

将 Instantsearch 前端库与 Elasticsearch 一起使用。适用于 React、Vue、Angular 和 Javascript 的组件。

阅读更多 →

语义搜索支持

使用 NLP 使用 Elasticsearch 构建语义搜索体验。

阅读更多 →

兼容 Autocomplete.js

使用与 Searchkit 兼容的 Autocomplete.js 构建自动完成体验。

阅读更多 →

地理搜索组件

使用 Google Maps 构建地理搜索体验。

阅读更多 →

Elasticsearch 的全部功能

Searchkit 构建在 Elasticsearch 之上,这意味着您可以使用 Elasticsearch 查询语言来构建您的搜索体验。

请求钩子

在将查询发送到 Elasticsearch 之前和之后自定义查询。允许您添加自定义过滤器或轻松更改查询 DSL。

阅读更多 →

自定义查询

允许您使用 Elasticsearch 查询语言构建自己的评分查询。

阅读更多 →

嵌套字段支持

支持嵌套字段,适用于需要联接的数据模型。

阅读更多 →

自定义 Facet 聚合

使用 Elasticsearch 聚合构建您自己的 Facet。

阅读更多 →

查询规则使相关性变得简单

查询规则允许您自定义搜索体验的行为。您可以使用查询规则根据一组条件提升或过滤结果,或更改结果的排名。

提升或排除结果

根据一组查询、过滤器或上下文条件触发提升或排除结果。

阅读更多 →

固定或隐藏结果

当结果与查询匹配时,将其固定到搜索结果的顶部。

阅读更多 →

显示、排序和隐藏 Facet

根据用户搜索的内容或应用的过滤器隐藏、显示或排序 Facet。

阅读更多 →

5 分钟视频教程

我是否需要将 Elasticsearch 公开到公共互联网?

不需要。您可以使用 Searchkit API 将请求代理到 Elasticsearch。XHR 请求将把搜索状态提供给 Searchkit Node API,然后后者将请求转换为 Elasticsearch 查询并在 Elasticsearch 中执行它们。

Searchkit 提供两种选择:直接从浏览器执行搜索或使用 Searchkit API 将请求代理到 Elasticsearch。直接从浏览器执行搜索提供了极佳的开发体验和原型设计。准备好部署后,您可以使用 Searchkit API 将请求代理到 Elasticsearch。

我是否需要使用 React?

您可以使用 React、React Native、Vue、Angular。您甚至不需要使用前端框架,可以使用纯 Javascript 和 HTML 以及 instantsearch.js 小部件。

支持哪个版本的 Elasticsearch?

Searchkit 兼容 Elasticsearch 7.0 及更高版本 + Opensearch 2.0 及更高版本。

您是否支持 Android 和 iOS?

有可能。Searchkit API 模拟了 Algolia API,因此应该可以通过进行一些调整来将 Algolia Instantsearch 客户端与 Searchkit API 一起使用。如果您对此感兴趣,请告诉我们。

为什么我要使用 Searchkit 而不是 Algolia?

Elasticsearch 比 Algolia 具有许多优势。您可能希望将 Elasticsearch 作为 Algolia 的更便宜的替代方案,尤其是在您拥有大型数据集的情况下。您可能希望在您自己的基础设施上运行 Elasticsearch,或者对查询相关性有更大的控制权。


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