#elasticsearch #indexing
#elasticsearch #индексирование
Вопрос:
Я новичок в elasticsearch, и я знаю, что индекс в elasticsearch имеет 2 значения: это либо логическое пространство имен, которое сопоставляется сегментам в узле, либо индексирует некоторые данные, как это делается в системах управления реляционными базами данных. Поэтому обычно в SQL я бы использовал «Создать индекс» для создания единого или составного индекса для поля или нескольких полей, как мне это сделать в elasticsearch или elasticsearch автоматически создает индекс (глагол), что может повысить эффективность поиска?
Ответ №1:
Вы были правы в том, что индекс в elasticsearch внутренне сопоставлен с сегментами и репликами, но вы путаетесь с наименованием / значением индекса, относящегося к СУБД (в СУБД он создан для повышения эффективности поиска).
В то время как в Elatsicsearch индекс содержит сопоставление (где вы определяете различные поля, их тип данных и анализатор), для получения дополнительной информации обратитесь к Сопоставлению в elasticsearch
Теперь, когда вы определяете поле в elasticsearch, оно принимает несколько параметров, один из которых param также называется index, что, согласно тому же официальному документу,
Параметр index определяет, будут ли индексироваться значения полей. Он принимает значение true или false и по умолчанию принимает значение true. Поля, которые не проиндексированы, не подлежат запросу.
Это означает, что поле будет частью инвертированного индекса Elasticsearch, который используется для запроса / поиска данных, и, очевидно, без этой опции вы не сможете выполнить поиск по этому конкретному полю, и поскольку это часть инвертированного индекса (более быстрая структура данных для повышения производительности поиска), вы неявно получите лучшую производительность поиска 🙂
Как упоминалось в официальном документе, значение параметра index по умолчанию равно true, поэтому, чтобы ответить на ваш вопрос, вам не нужно специально определять индекс в Elasticsearch.