关于新实时模式

你好!

3.3.0 中,我们引入了一种新的守护进程模式。我们称之为 实时模式 (RT 模式)。它允许使用 CREATE TABLEDROP TABLE 来管理你的索引(表)。普通模式仍然支持,该模式假定在配置文件中定义索引架构。

在此之前,你可以从实时索引中插入和删除数据,但无法通过 SQL/HTTP 添加和删除索引。

通过在配置文件中指定 data_dir 来启用新模式。请注意,配置文件仅用于守护进程设置,此模式下不允许有 sourceindex 部分。
现在可以使用 ALTER TABLE 来更改索引设置,例如

ALTER TABLE products ignore_chars='.'

然而,这些新设置仅影响新插入的文档;它们不会影响索引中现有的文档。

data_dir


data_dir 指定了所有新索引将存储的目录。每个索引存储在 data_dir 内的单独文件夹中。你不能手动将索引添加到此文件夹,因为在新 RT 模式下运行的守护进程创建的索引在内部与普通模式下创建的索引不同。使用 IMPORT TABLE 来导入旧索引。它将索引文件复制到 data_dir 内的新文件夹,并执行必要的索引格式更改。
有关索引差异的更多详细信息,请参见下文。
RT 模式 仅与 RT 或 PQ 索引一起使用。你不能在此模式下的守护进程中创建或导入普通索引。一个可能的解决方案是使用 ATTACH 将普通索引添加到 RT 索引(在旧模式下运行的守护进程中),然后使用 IMPORT TABLE 将该 RT 索引导入到在 RT 模式下运行的守护进程中。

如何备份


由于你不应该手动操作 data_dir 的内容,目前备份或将 data_dir 移动到另一个位置的唯一安全方法是关闭守护进程,复制/移动 data_dir,然后重新启动守护进程。

复制


由于 复制 在节点上创建/删除索引,因此它仅适用于在新 RT 模式下运行的守护进程。

外部文件


CREATE TABLEALTER TABLE 中仅允许使用外部文件(词形、停用词、例外)的绝对路径。这是为了避免混淆,因为相对路径是相对于启动守护进程的文件夹,而用户可能不知道这一点。

实现细节


data_dir 包含索引和一个 .json 文件,该文件列出了这些索引及其某些属性。此文件由守护进程修改,你不应该手动更改它。

.json 配置中的所有路径都是相对的。其想法是你可以将 data_dir 复制/移动到新的节点/位置,修改配置文件中的 data_dir,并从新位置运行守护进程,而无需任何额外更改。

在 RT 模式和普通模式下创建的索引之间也存在索引格式差异,它们具有相同的目的。旧模式下创建的索引存储外部文件的完整路径。RT 模式下创建的索引仅存储文件名,路径是根据索引名称和配置中的 data_dir 值动态生成的。

在 RT 模式下,守护进程处理外部文件(词形、例外或停用词文件)的方式有明显不同。在引入 RT 模式之前,索引要么在索引头中嵌入外部文件,要么从存储它们的位置使用它们(取决于设置)。现在,当 Manticore 在 RT 模式下运行时,嵌入已被禁用。例如,当进行一个

CREATE TABLE (title text) wordforms ='/path/to/wordforms.txt'

词形、停用词和例外被复制到 data_dir 内的索引文件夹中。
IMPORT TABLE 基本上做了同样的事情。它将外部文件复制到 data_dir 内的索引文件夹中。如果在创建多个索引时使用相同的外部文件,这可能会导致某些文件重复。然而,这并不一定意味着守护进程会使用额外的 RAM。例如,如果有多个索引使用相同的原始词形文件的副本,searchd 只加载一个词形文件的实例。

如果你对新模式有任何疑问,请随时在以下地方提问:

或者从我们的 " Manticoresearch - RT 模式 - 索引管理 " 互动课程中自行探索。

安装Manticore Search

安装Manticore Search