После обновления моего кластера ES с 6.4.2 до 7.6.1 и восстановления моментального снимка старого кластера документы по нескольким заданным индексам перестали извлекаться по идентификатору.
Это не работает после восстановления снимка .
GET myindex/_doc/c1d89b00-d030-11e3-bd52-f3718ac695f3
Если я дублирую документ:
PUT myindex/_doc/c1d89b00-d030-11e3-bd52-f3718ac695f3
{
"name" : "dogs and cats",
"notes" : "Imported",
"myid" : "c1d89b00-d030-11e3-bd52-f3718ac695f3" // yes, it's redundant
}
Это неожиданно работает:
GET myindex/_doc/c1d89b00-d030-11e3-bd52-f3718ac695f3
Однако теперь у меня есть два документа с тот же ID.
(обновление не работает, потому что do c не может быть извлечено по идентификатору)
Определение индекса:
GET myindex
{
"myindex" : {
"aliases" : { },
"mappings" : {
"properties" : {
"merge_id" : {
"type" : "keyword"
},
"name" : {
"type" : "text",
"analyzer" : "index_ngram",
"search_analyzer" : "search_ngram"
},
"notes" : {
"type" : "text",
"analyzer" : "index_ngram",
"search_analyzer" : "search_ngram"
},
"myid" : {
"type" : "keyword"
}
}
},
"settings" : {
"index" : {
"max_ngram_diff" : "48",
"number_of_shards" : "5",
"provided_name" : "myindex",
"creation_date" : "1584420860612",
"analysis" : {
"filter" : {
"my_ngram" : {
"type" : "ngram",
"min_gram" : "2",
"max_gram" : "50"
}
},
"analyzer" : {
"index_ngram" : {
"filter" : [
"lowercase",
"my_ngram"
],
"type" : "custom",
"tokenizer" : "keyword"
},
"default" : {
"tokenizer" : "keyword"
},
"search_ngram" : {
"filter" : "lowercase",
"type" : "custom",
"tokenizer" : "keyword"
}
}
},
"number_of_replicas" : "0",
"uuid" : "uyp_WK3xRjucFRGhYDHbcQ",
"version" : {
"created" : "7060199"
}
}
}
}
}
Самое интересное в том, что у меня есть другие индексы (использующие другой формат идентификатора), для которых их данные были восстановлены из того же снимка, который их документы продолжали получать по идентификатору после обновления.