Обнаружить изменения во время массовой индексации - PullRequest
0 голосов
/ 20 ноября 2018

Мы используем Elasticsearch v5.6.12 для нашей базы данных.Мы обновляем это часто, используя массовый API REST.Иногда отдельные запросы ничего не меняют (т. Е. Ценность документа, который Elasticsearch уже обновлен). Как я могу обнаружить эти случаи?

Я видел это (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html), но я не уверен, что это применимо в нашей ситуации.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете использовать noop обнаружение при проверке результата ваших массовых запросов.

Когда массовый запрос возвращается, вы можете перебирать каждый результат обновления и проверять, если *Поле 1006 * имеет значение noop (против updated)

# Say the document is indexed
PUT test/doc/1
{
  "test": "123"
}

# Now you want to bulk update it
POST test/doc/_bulk
{"update":{"_id": "1"}}
{"doc":{"test":"123"}}        <-- this will yield `result: noop`
{"update":{"_id": "1"}}
{"doc":{"test":"1234"}}       <-- this will yield `result: updated`
{"update":{"_id": "2"}}
{"doc":{"test":"3456"}, "doc_as_upsert": true}       <-- this will yield `result: created`

Результат:

{
  "took" : 6,
  "errors" : false,
  "items" : [
    {
      "update" : {
        "_index" : "test",
        "_type" : "doc",
        "_id" : "1",
        "_version" : 2,
        "result" : "noop",            <-- see "noop"
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "status" : 200
      }
    },
    {
      "update" : {
        "_index" : "test",
        "_type" : "doc",
        "_id" : "1",
        "_version" : 3,
        "result" : "updated",            <-- see "updated"
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 2,
        "_primary_term" : 1,
        "status" : 200
      }
    },
    {
      "_index" : "test",
      "_type" : "doc",
      "_id" : "2",
      "_version" : 1,
      "result" : "created",            <-- see "created"
      "_shards" : {
        "total" : 2,
        "successful" : 1,
        "failed" : 0
      },
      "_seq_no" : 0,
      "_primary_term" : 1
    }
  ]
}

Как видно, при указании doc_as_upsert: true для документа с идентификатором2, документ будет создан, и значение поля result будет created

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...