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

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 установлен.

Подробнее о 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
  • 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 доступен для real-time и percolate таблиц. Нельзя заменять данные в plain таблице.

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

Bulk replace

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

‹›
  • 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: August 28, 2025