Сколько времени занимает загрузка документа в ES, прежде чем его можно будет найти правильно? - PullRequest
0 голосов
/ 25 марта 2019

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

Используя следующий код:

esClient.Update<TESDocModel, TESDocModel>(new DocumentPath<TESDocModel>(docId), u => u.Index(index).Doc(toUpdate).DocAsUpsert(true));

Это правильное поведение или должен быть документ для немедленного поиска после завершения операции upsertdocument?

1 Ответ

2 голосов
/ 25 марта 2019

Это зависит от того, когда выполняется действие обновления над осколком.Когда документ проиндексирован, он не доступен для поиска сразу.Чтобы сделать доступным поиск по обновлению над осколком, выполняется.Это за кулисами записывает и открывает новый сегмент, делая документы, содержащиеся в этих сегментах, доступными для поиска.

По умолчанию эластичное обновление осколка каждую секунду.Вот почему говорят, что Elasticsearch выполняет поиск в режиме реального времени.

Интервал обновления можно контролировать с помощью параметра индекса, заданного параметром refresh_interval.Например, нижеприведенный интервал обновления изменится на 5 секунд, а для любого нового проиндексированного документа максимальная длительность поиска составит 5 секунд.

PUT /my_index
{
  "settings": {
    "refresh_interval": "5s" 
  }
}

Чтобы узнать больше об этом, прочтите оasticsearch вблизи реального времени.поиск .

...