исключение document_missing_exception при выполнении обновления ElasticSearch

#elasticsearch

#elasticsearch

Вопрос:

Я рассмотрел несколько вопросов с той же проблемой «document_missing_exception», но, похоже, в моем случае это не та же проблема. Я могу запросить документ, но не удалось, когда я попытался его обновить. Мой запрос:

 # search AuthEvent by sessionID
GET events-*/_search
{
  "size": "100",
  "query": {
      "bool": {
          "must": [{
                  "term": {
                      "type": {
                          "value": "AuthEvent"
                      }
                  }
              },
              {
                "term": {
                  "client.sessionID.raw": {
                    "value": "067d660a1504Y67FOuiiRIEkVNG8uYIlnK87liuZGLBcSmEW0aHoDXAHfu"
                  }
                }
              }
          ]
      }
  }
}
  

Результат запроса:

 {
  "took" : 18,
  "timed_out" : false,
  "_shards" : {
    "total" : 76,
    "successful" : 76,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 6.705622,
    "hits" : [
      {
        "_index" : "events-2020.10.06",
        "_type" : "doc",
        "_id" : "2c675295b27a225ce243d2f13701b14222074eaf",
        "_score" : 6.705622,
        "_routing" : "067d660a1504Y67FOuiiRIEkVNG8uYIlnK87liuZGLBcSmEW0aHoDXAHfu",
        "_source" : {
          # some data
        }
      }
    ]
  }
}
  

Запрос на обновление:

 POST events-2020.10.06/_doc/2c675295b27a225ce243d2f13701b14222074eaf/_update
{
  "doc" : {
    "custom" : {
      "testField" : "testData"
    }
  }
}
  

И результат обновления:

 {
  "error" : {
    "root_cause" : [
      {
        "type" : "document_missing_exception",
        "reason" : "[_doc][2c675295b27a225ce243d2f13701b14222074eaf]: document missing",
        "index_uuid" : "5zhQy6W6RnWscDz7Av4_bA",
        "shard" : "1",
        "index" : "events-2020.10.06"
      }
    ],
    "type" : "document_missing_exception",
    "reason" : "[_doc][2c675295b27a225ce243d2f13701b14222074eaf]: document missing",
    "index_uuid" : "5zhQy6W6RnWscDz7Av4_bA",
    "shard" : "1",
    "index" : "events-2020.10.06"
  },
  "status" : 404
}
  

Я новичок в ElasticSearch и не смог найти никаких причин для такого поведения. Я использую версию ElasticSearch 6.7.1 oss Kibana для работы с данными. Я также пытался с массовым обновлением, но закончил с той же ошибкой.

Ответ №1:

Как вы можете видеть в результатах запроса, ваш документ был проиндексирован со routing значением, и оно отсутствует в вашем запросе на обновление.

Попробуйте это вместо:

 POST events-2020.10.06/_doc/2c675295b27a225ce243d2f13701b14222074eaf/_update?routing=067d660a1504Y67FOuiiRIEkVNG8uYIlnK87liuZGLBcSmEW0aHoDXAHfu
{
  "doc" : {
    "custom" : {
      "testField" : "testData"
    }
  }
}
  

Если документ индексируется со routing значением, все последующие операции получения, обновления и удаления также должны выполняться с этим значением маршрутизации.

Комментарии:

1. Это сработало отлично! Я обновил команду массового обновления, и она также сработала. Большое вам спасибо.