#ruby-on-rails #elasticsearch #searchkick
#ruby-on-rails #elasticsearch #searchkick
Вопрос:
У меня есть пользователь модели, которого я индексирую в ElasticSearch через Searchkick:
class User < ActiveRecord::Base
searchkick callbacks: :async, routing: true
end
Также у меня есть фоновое задание для условной переиндексации.
Проблема в том, что в некоторых случаях у меня повторяющиеся индексы для одного пользователя:
2.3.8 :191 > u = User.find_by_email("john.doe@mail.com")
=> #<User id: 401953, email: "john.doe@mail.com", name: "John Doe", university_id: 83, device_id: "b3f3d62839ca6b981ea236562e6da9ff", app_version: "6.7.0>
Но у меня повторяющиеся индексы searchkick с тем же идентификатором и _index!
2.3.8 :192 > ap User.search("*", where: {email: "john.doe@mail.com"}, load: false).results
[
[0] {
"_index" => "users_production_20200717081323100",
"_type" => "user",
"_id" => "401953",
"_score" => 1.0,
"_routing" => "123",
"email" => "john.doe@mail.com",
app_version" => "6.6.0",
"id" => "401953"
},
[1] {
"_index" => "users_production_20200717081323100",
"_type" => "user",
"_id" => "401953",
"_score" => 1.0,
"_routing" => "123",
"email" => "john.doe@mail.com",
app_version" => "6.7.0",
"id" => "401953"
}
]
Единственный атрибут, который изменяется, — это app_version . В какой-то момент у пользователя была версия «6.6.0», и при обновлении до 6.7.0 индекс повторялся. В этом случае, почему это происходит? это нормальное поведение драгоценного камня ?. Не следует ли его обновить и оставить один индекс?
С уважением