首页
/ Toshi Search项目API接口详解

Toshi Search项目API接口详解

2025-07-08 08:26:17作者:魏侃纯Zoe

项目概述

Toshi Search是一个基于Rust实现的全文搜索引擎,提供高效的索引和搜索能力。本文将从技术角度详细解析其API设计,帮助开发者快速理解和使用该系统的核心功能。

API基础信息

Toshi Search的API遵循RESTful设计原则,使用RAML 1.0规范定义,主要特点包括:

  • 基础URI:localhost:8080
  • 支持HTTP/HTTPS协议
  • 默认使用JSON作为数据交换格式
  • 当前版本:0.1.1

核心API端点解析

1. 版本信息接口

端点GET /

功能:获取当前运行的Toshi Search版本信息

响应示例

{
  "name": "Toshi Search",
  "version": "0.1.1"
}

2. 索引操作接口

基础端点/{index}

提供对特定索引的CRUD操作:

2.1 获取索引文档

  • 方法:GET
  • 功能:获取指定索引下的所有文档

2.2 文档搜索

  • 方法:POST
  • 请求体:包含查询条件的JSON对象
  • 功能:返回匹配查询条件的文档

2.3 添加文档

  • 方法:PUT
  • 请求体结构
    {
      "options": {
        "commit": true
      },
      "document": {
        "key": "value"
      }
    }
    
  • 选项说明
    • commit:是否立即提交变更(默认为true)

2.4 删除文档

  • 方法:DELETE
  • 功能:删除包含特定条件的文档

3. 索引管理接口

3.1 创建索引

  • 端点/{index}/_create
  • 方法:PUT
  • 功能:创建新索引

3.2 索引摘要

  • 端点/{index}/_summary
  • 方法:GET
  • 功能:获取索引的摘要信息

3.3 批量导入

  • 端点/{index}/_bulk
  • 方法:POST
  • 功能:批量导入文档到索引

3.4 强制提交

  • 端点/{index}/_flush
  • 方法:GET
  • 功能:强制将内存中的索引变更提交到磁盘

数据结构详解

1. 文档结构(Document)

Toshi使用键值对的形式表示文档,与Tantivy搜索引擎兼容。文档字段可以灵活定义,支持各种数据类型。

2. 选项配置(Options)

  • commit:控制是否立即提交变更,适用于需要高性能批量导入的场景

最佳实践建议

  1. 批量操作:对于大量文档导入,建议使用/_bulk端点而非单文档PUT,可显著提高性能

  2. 提交控制:在批量导入时,可以设置commit: false,最后手动调用/_flush,减少频繁提交的开销

  3. 索引设计:合理规划索引结构,不同类型的文档建议使用不同索引

  4. 错误处理:所有API调用都应考虑错误情况,特别是创建索引和文档操作

性能考量

Toshi Search作为全文搜索引擎,其API设计考虑了高性能需求:

  1. 批量操作接口减少网络开销
  2. 灵活的提交控制优化写入性能
  3. 简洁的文档结构降低序列化成本

通过合理使用这些API,开发者可以在各种应用场景中实现高效的搜索功能。