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 库来构建您的搜索体验。
将 Instantsearch 前端库与 Elasticsearch 一起使用。适用于 React、Vue、Angular 和 Javascript 的组件。
使用 NLP 使用 Elasticsearch 构建语义搜索体验。
使用与 Searchkit 兼容的 Autocomplete.js 构建自动完成体验。
使用 Google Maps 构建地理搜索体验。
不需要。您可以使用 Searchkit API 将请求代理到 Elasticsearch。XHR 请求将把搜索状态提供给 Searchkit Node API,然后后者将请求转换为 Elasticsearch 查询并在 Elasticsearch 中执行它们。
Searchkit 提供两种选择:直接从浏览器执行搜索或使用 Searchkit API 将请求代理到 Elasticsearch。直接从浏览器执行搜索提供了极佳的开发体验和原型设计。准备好部署后,您可以使用 Searchkit API 将请求代理到 Elasticsearch。
您可以使用 React、React Native、Vue、Angular。您甚至不需要使用前端框架,可以使用纯 Javascript 和 HTML 以及 instantsearch.js 小部件。
Searchkit 兼容 Elasticsearch 7.0 及更高版本 + Opensearch 2.0 及更高版本。
有可能。Searchkit API 模拟了 Algolia API,因此应该可以通过进行一些调整来将 Algolia Instantsearch 客户端与 Searchkit API 一起使用。如果您对此感兴趣,请告诉我们。
Elasticsearch 比 Algolia 具有许多优势。您可能希望将 Elasticsearch 作为 Algolia 的更便宜的替代方案,尤其是在您拥有大型数据集的情况下。您可能希望在您自己的基础设施上运行 Elasticsearch,或者对查询相关性有更大的控制权。