实时表

实时表 是 Manticore 中的主要表类型。它允许您添加、更新和删除文档,并且您可以立即看到这些更改。您可以在配置文件中设置实时表,或者使用 CREATEUPDATEDELETEALTER 等命令。

内部来说,实时表由一个或多个称为 chunks普通表组成。有两种类型的 chunks:

  • 多个 磁盘 chunk - 这些保存在磁盘上,结构类似于普通表
  • 单个 内存 chunk - 这个保存在内存中,收集所有更改。

内存 chunk 的大小由 rt_mem_limit 设置控制。一旦达到此限制,内存 chunk 会被转移到磁盘,成为磁盘 chunk。如果磁盘 chunk 太多,Manticore 会合并其中一些以提升性能。

创建实时表:

您可以通过两种方式创建新的实时表:使用 CREATE TABLE 命令或通过 HTTP JSON API 的 _mapping 端点

CREATE TABLE 命令:

您可以通过 SQL 和 HTTP 协议使用此命令:

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • Javascript
  • Java
  • C#
  • Rust
  • Typescript
  • Go
  • CONFIG
📋
CREATE TABLE products(title text, price float) morphology='stem_en';
‹›
Response
Query OK, 0 rows affected (0.00 sec)

_mapping API:

注意:_mapping API 需要 Manticore Buddy。如果无法使用,请确保 Buddy 已安装。

另外,您可以通过 _mapping 端点创建新表。该端点允许您定义类似 Elasticsearch 的表结构,并将其转换为 Manticore 表。

请求体必须具有以下结构:

"properties"
{
  "FIELD_NAME_1":
  {
    "type": "FIELD_TYPE_1"
  },
  "FIELD_NAME_2":
  {
    "type": "FIELD_TYPE_2"
  },
  ...
  "FIELD_NAME_N":
  {
    "type": "FIELD_TYPE_M"
  }
}

创建表时,Elasticsearch 数据类型将根据以下规则映射为 Manticore 类型:

  • aggregate_metric => json
  • binary => string
  • boolean => bool
  • byte => int
  • completion => string
  • date => timestamp
  • date_nanos => bigint
  • date_range => json
  • dense_vector => json
  • flattened => json
  • flat_object => json
  • float => float
  • float_range => json
  • geo_point => json
  • geo_shape => json
  • half_float => float
  • histogram => json
  • integer => int
  • integer_range => json
  • ip => string
  • ip_range => json
  • keyword => string
  • knn_vector => float_vector
  • long => bigint
  • long_range => json
  • match_only_text => text
  • object => json
  • point => json
  • scaled_float => float
  • search_as_you_type => text
  • shape => json
  • short => int
  • text => text
  • unsigned_long => int
  • version => string
‹›
  • JSON
JSON
📋
POST /your_table_name/_mapping -d '
{
  "properties": {
    "price": {
        "type": "float"
    },
    "title": {
        "type": "text"
    }
  }
}
'
‹›
Response
{
"total":0,
"error":"",
"warning":""
}

CREATE TABLE LIKE:

您可以创建实时表的副本,可以选择是否包含数据。请注意,如果表很大,复制带数据的表可能需要一些时间。复制操作是同步模式,但如果连接中断,它会在后台继续。

CREATE TABLE [IF NOT EXISTS] table_name LIKE old_table_name [WITH DATA]

注意:复制表需要 Manticore Buddy。如果无法使用,请确保 Buddy 已安装。

‹›
  • SQL
  • Example (WITH DATA)
📋
create table products LIKE old_products;

👍 实时表可以做什么:

⛔ 实时表不能做什么:

  • 使用 indexer 功能导入数据。
  • 连接到 sources 以便从外部存储轻松索引。
  • 更新 killlist_target,因为它由实时表自动管理。

实时表文件结构

下表概述了实时表中不同文件扩展名及其各自的描述:

扩展名 描述
.lock 锁文件,确保一次只有一个进程可以访问该表。
.ram 表的 RAM 块,存储在内存中,用作更改的累加器。
.meta 定义实时表结构和设置的头文件。
.*.sp* 存储在磁盘上的磁盘块,格式与普通表相同。当 RAM 块大小超过 rt_mem_limit 时创建。

有关磁盘块结构的更多信息,请参阅 普通表文件结构

Last modified: August 28, 2025