≫ Обновление документов

REPLACE

REPLACE работает аналогично INSERT, но предварительно помечает предыдущий документ с таким же ID как удалённый перед вставкой нового.

Если вам нужны обновления на месте, пожалуйста, смотрите этот раздел.

SQL REPLACE

Синтаксис SQL-запроса REPLACE следующий:

Для замены всего документа:

REPLACE INTO table [(column1, column2, ...)]
    VALUES (value1, value2, ...)
    [, (...)]

Столбцы, явно не включённые в SQL-запрос, устанавливаются в значения по умолчанию, такие как 0 или пустая строка, в зависимости от их типа данных.

Для замены только выбранных полей:

REPLACE INTO table
    SET field1=value1[, ..., fieldN=valueN]
    WHERE id = <id>

Обратите внимание, что в этом режиме фильтровать можно только по id.

ПРИМЕЧАНИЕ: Частичная замена требует Manticore Buddy. Если не работает, убедитесь, что Buddy установлен.

Для замены из SELECT:

REPLACE INTO table
    SELECT ... FROM source
REPLACE INTO table (column1, column2, column3)
    SELECT ... FROM source

ПРИМЕЧАНИЕ: Этот синтаксис требует Manticore Buddy. Если он не работает, убедитесь, что Buddy установлен.

Подробнее о UPDATE и частичной замене REPLACE читайте здесь.

Смотрите примеры для более подробной информации.

JSON REPLACE

  • /replace:

    POST /replace
    {
      "table": "<table name>",
      "id": <document id>,
      "doc":
      {
        "<field1>": <value1>,
        ...
        "<fieldN>": <valueN>
      }
    }

    /index — алиас для этого эндпоинта и работает так же.

  • Elasticsearch-подобный эндпоинт <table>/_doc/<id>:

    PUT/POST /<table name>/_doc/<id>
    {
      "<field1>": <value1>,
      ...
      "<fieldN>": <valueN>
    }

    ПРИМЕЧАНИЕ: Elasticsearch-подобная замена требует Manticore Buddy. Если не работает, убедитесь, что Buddy установлен.

  • Частичная замена:

    POST /<{table | cluster:table}>/_update/<id>
    {
      "<field1>": <value1>,
      ...
      "<fieldN>": <valueN>
    }

    <table name> может быть просто названием таблицы или в формате cluster:table. Это позволяет делать обновления в конкретном кластере, если это необходимо.

    ПРИМЕЧАНИЕ: Частичная замена требует Manticore Buddy. Если не работает, убедитесь, что Buddy установлен.

Смотрите примеры для более подробной информации.

‹›
  • SQL
  • REPLACE SET
  • REPLACE ... SELECT
  • JSON
  • Elasticsearch-like
  • Elasticsearch-like partial
  • Elasticsearch-like partial in cluster
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • TypeScript
  • Go
📋
REPLACE INTO products VALUES(1, "document one", 10);
‹›
Response
Query OK, 1 row affected (0.00 sec)

REPLACE доступен для реального времени и перколационных таблиц. В обычных таблицах заменить данные нельзя.

Когда вы запускаете REPLACE, предыдущий документ не удаляется, а помечается как удалённый, поэтому размер таблицы растёт до тех пор, пока не произойдёт слияние чанков. Чтобы форсировать слияние чанков, используйте оператор OPTIMIZE.

Массовая замена

Вы можете заменить несколько документов одновременно. Подробнее смотрите в разделе массовое добавление документов.

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • TypeScript
  • Go
📋
REPLACE INTO products(id,title,tag) VALUES (1, 'doc one', 10), (2,' doc two', 20);
‹›
Response
Query OK, 2 rows affected (0.00 sec)
Last modified: January 16, 2026