2015-06-26 2 views
1

Если мы не укажем идентификатор при вставке документа в поиск elastics, идентификатор будет автоматически сгенерирован. Я также понимаю, что идентификаторы - это идентификаторы Flake, которые имеют прогностическую структуру.Является ли ElasticSearch Auto-Generated Ids последовательным?

Вопрос в том, являются ли эти сгенерированные идентификаторы Flake достаточно последовательными, чтобы я мог выполнять сортировку на _id или _uid и быть уверенным, что результаты находятся в том же порядке, что и вставленный?

ответ

1

Elasticsearch autogenerated _id является случайным, а не последовательным, и то же самое относится к _uid. Если вы хотите сортировать последовательно, то простой шаг позволяет _timestamp, поэтому _timestamp будет иметь время ввода документа.

Но, _timestamp обновляется при обновлении документа. Таким образом, вы можете создать новое поле даты, предоставляющее текущее время вручную.

https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-timestamp-field.html

+0

Даже если бы я был отдельный временной метки поля с миллисекундах, есть шанс, что я могу иметь несколько документов с той же меткой времени. В этом сценарии мне нужен более гранулированный уровень для сортировки документов. –

+0

Если это дело, вы должны сами знать, что написано первым. – progrrammer

0

автоматически сгенерированный _id не последователен. Это GUID с кодировкой в ​​кодировке Base64, сгенерированный с использованием модифицированного алгоритма FlakeID. FlakeID - это децентрализованный алгоритм, который генерирует k-упорядоченные уникальные идентификаторы.

Обратите внимание, что Elasticsearch не генерирует _id с использованием случайных UUID.

Смотреть подробнее:

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