2015-02-24 3 views
3

Я задал один вопрос в своем понимании процесса индексации ElasticSearch. Я уже прочитал this article, в котором говорится, что инвертированный индекс хранит все токены всех документов и неизменен. Таким образом, чтобы обновить его, мы должны удалить его и переиндексировать все данные, чтобы все доступные для поиска документы.ElasticSearch: создание нового инвертированного индекса после каждого обновления

Но я читал об частичном обновлении документов (автоматически маркируя их «удаленным» и вставляя + индексирование нового). Но в этой статье нет упоминания о переиндексировании всех предыдущих данных.

Итак, я не понимаю правильно следующее: когда я обновляю документ (текстовый документ со 100 000 словами) и уже имею в хранилище какой-то другой проиндексированный документ - это правда, что я буду иметь в каждой операции UPDATE или INSERT переиндексацию процесс всех моих документов?

Основном Я полагаюсь на настройках ElasticSearch по умолчанию (5 первичных Осколков с одной репликой на осколок и 2 узлов в кластере)

+0

и я также предлагаю не задавать более одного вопроса в сообщении – bpgergo

+0

Спасибо, я обновил свой вопрос – maret

ответ

1

Вы можете просто иметь документ, обновленный (то есть переиндексировано, которая в основном так же, как удаление из индекс и добавление его снова), см.: http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/update-doc.html. Это позаботится обо всем индексе, поэтому вам не нужно будет переиндексировать каждый другой документ.

Я не уверен, что вы подразумеваете под операцией «сохранить», вы можете пояснить это на примере.

С момента, необходимого для обновления документа из 100 тыс. Слов, я предлагаю вам попробовать его.

+0

Да, я прочитал это. Что означает «Это позаботится обо всем индексе»? Если я вставляю или обновляю документ, хранилище с инвертированным индексом становится устаревшим, поэтому все документы в одном индексе должны быть переиндексированы, если я правильно понимаю ... Но как обновления могут быть доступны за 1 секунду (I прочитал ли это в руководстве), если у меня есть огромное количество документов на складе? – maret

+0

Это означает, что обновленный документ будет сначала удален из индекса, а затем добавлен снова, следовательно, инвертированный индекс будет обновлен после обновления. Как обновление может занимать всего 1 секунду? Это более глубокий вопрос, достаточно сказать, что Lucene devs - умные люди, я рекомендую изучить [индексирование реализации] (http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/core/SRC/Java/орг/Apache/Lucene/индекс /). – bpgergo

+1

Спасибо! Несколько минут назад я нашел сообщение, которое помогло мне понять смысл «сегментов черепа». http://stackoverflow.com/questions/15426441/basics-about-segments-in-elasticsearch Каждый раз, когда мы обновляем документ, он индексируется по новому сегменту (новый инвертированный индекс), и через некоторое время индексированные объединяются в фоновом режиме – maret

Смежные вопросы