产品概述
> 文档中心 > 文档中心 > INFINI Easysearch > 产品概述

概述 #

介绍 #

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。

基本概念 #

集群和节点 #

Easysearch 采用分布式设计,意味着您可以与 Easysearch 集群中的任何节点进行交互。每个集群都是一个或多个节点、存储数据和处理搜索请求的服务器的集合。

您可以在笔记本电脑上本地运行 Easysearch,它的系统要求很低,但您也可以将单个集群扩展到数据中心中的数百台功能强大的机器。

在单节点集群(如笔记本电脑)中,一台机器必须完成所有工作:管理集群的状态、索引和搜索数据,以及在索引数据之前对数据进行任何预处理。 然而随着集群的增长,您可以细分职责。拥有快速磁盘和大内存的节点可能非常擅长索引和搜索数据,而拥有大量 CPU 和小型磁盘的节点可以管理集群状态。 有关设置节点类型的详细信息,请参阅 搭建集群

索引与文档 #

Easysearch 将数据组织成索引。每个索引都是 JSON 文档的集合。如果您有一组原始百科全书文章或日志行要添加到 Easysearch,则必须首先将它们转换为 JSON。一个简单的 JSON 文档如下所示:

{
  "title": "INFINI Labs",
  "release_date": "2021-12-03"
}

将文档添加到索引时,Easysearch 会添加一些元数据,例如唯一的文档 ID:

{
  "_index": "<index-name>",
  "_type": "_doc",
  "_id": "<document-id>",
  "_version": 1,
  "_source": {
    "title": "INFINI Labs",
    "release_date": "2021-12-03"
  }
}

索引还包含映射和设置:

  • 映射是索引中文档所具有的字段的集合。在本例中,这些字段是 titlerelease_date
  • 设置包括索引名称、创建日期和分片数量等数据。

主分片和副本分片 #

Easysearch 将索引分割成分片,以便在集群中的节点之间均匀分布。例如,400GB 的索引对于集群中的任何一个节点来说都可能过大,无法处理, 但将其拆分为 10 个分片,每个分片 40GB。Easysearch 可以将分片分布在 10 个节点上,并单独处理每个分片。

默认情况下,Easysearch 为每个主分片创建一个副本分片。例如,如果将索引拆分为十个分片,Easysearch 还会创建十个副本分片。 这些副本分片在节点故障时充当备份, Easysearch 将副本分片分发到与其对应的主分片不同的节点, 但它们也提高了集群处理搜索请求的速度和速率。对于搜索繁重的工作负载,可以为每个索引指定多个副本。

尽管分片是 Easysearch 索引的一部分,但我们知道,每个分片实际上都是一个完整的 Lucene 索引,这个细节很重要, 因为 Lucene 的每个实例都是一个消耗 CPU 和内存的运行进程,因此并非分片越多越好。 例如,将 400GB 的索引拆分为 1000 个分片会给集群带来不必要的压力。通常的经验法则是将分片大小保持在 10–50GB 之间。

REST API #

您可以使用 REST API 与 Easysearch 集群进行交互,这提供了很大的灵活性。 您可以使用 curl 等客户端或任何可以发送 HTTP 请求的编程语言。要将 JSON 文档添加到 Easysearch 索引(即索引文档),请发送 HTTP 请求:

curl -XPUT -H "Content-Type: application/json" https://<host>:<port>/<index-name>/_doc/<document-id> -d '
{
  "title": "INFINI Labs",
  "release_date": "2021-12-03"
}'

要进行文档搜索,请执行以下操作:

curl -XGET https://<host>:<port>/<index-name>/_search?q=wind

删除文档的步骤:

curl -XDELETE https://<host>:<port>/<index-name>/_doc/<document-id>

您可以使用 REST API 更改大多数 Easysearch 设置,修改索引,检查集群的运行状况,获取几乎所有的统计信息。