представлять
Elasticsearch — это распределенная и масштабируемая система поиска и анализа в реальном времени, поисковая система, основанная на системе полнотекстового поиска Apache Lucene™. Конечно, Elasticsearch не так прост, как Lucene. Давайте представим, почему ElasticSearch является распределенным, масштабируемость, высокая производительность, высокая доступность.
что такое поиск
Когда мы хотим узнать какую-то информацию, мы будем использовать некоторые поисковые системы для получения нужных нам данных, например, для поиска игры, которая нам нравится, или книги, которая нам нравится, и т. д. Это первое впечатление от поиска. грубо говоря, это найти информацию, которую вы хотите знать в любой ситуации, которая является поиском.
- Теперь поиск также известен как вертикальный поиск Вертикальный поиск относится к профессиональным поисковым системам в определенной отрасли, таким как веб-сайты электронной коммерции, новостные веб-сайты, различные приложения и т. д. Все они являются подразделениями и расширениями поисковых систем.После извлечения необходимых данных для обработки некоторая форма возвращается в Пользователь.
Что делать, если база данных используется для поиска
Например, у нас есть таблица продуктов, и теперь мы хотим найти ключевое слово «одежда» и выполнитьвыберите * из продуктов, где product_name например %clothes%, (при условии, что нет других настроек для повышения эффективности) для поиска или сопоставления других полей, вы можете проанализировать недостатки этого метода.
-
1. Например, данные указанного поля каждой записи будут очень длинными, например, поле **"ознакомление с продуктом"** может иметь тысячи или десятки тысяч символов, поэтому эти символы будут использоваться при Содержит ли совпадение искомое ключевое слово.
-
2. Этот метод может искать только полностью содержащие ** "одежда"Это двухсимвольная запись, но могут быть какие-то особые случаи, в некоторых записяхКлючевое слово "одежда" не является непрерывным, и некоторые символы могут быть вставлены в середине одежды. В настоящее время поиск по этим записям невозможен, но мы хотим найти этот товар. В настоящее время недостатки этот метод очень очевиден.
В общем, использование базы данных для реализации поиска не очень надежно, и производительность будет низкой.
Что такое полнотекстовый поиск
Для начала нужно понять, что такое инвертированный индекс? Давайте сначала сфотографируем здесь, в ней 4 записи.
Теперь разделите содержимое этих 4 записей на несколько записей, этот процесс называется сегментацией слов.Теперь мы получаем эти 4 записи, чтобы разделить слова, затем поместить написанные слова в список и записать их идентификаторы, анализПеревернутый индекс Теперь мы входимбиохимический фильмЭто ключевое слово, в это время поисковая система будет сегментировать контент, который мы вводим, какбиохимическийа такжеКиноЭти два ключевых слова, а затем используйте эти два ключевых слова для сопоставления в инвертированном индексе и обнаружите, что он содержитбиохимическийЗапись для этого ключевого слова содержит четыре записи с идентификаторами 1, 2, 3 и 4, включаяКиноЭто ключевое слово имеет запись с идентификатором 1. Поскольку запись с идентификатором 1 была введена, она исключена.В настоящее время мы получаем 4 записи, которые нам нужны, с идентификатором 1234. Аналогично, если мы просто введемКиноЭто ключевое слово, тогда допустима только запись с идентификатором 1.Полнотекстовый поиск заключается в разделении слов, сохранении их в инвертированном индексе, последующем анализе содержимого, введенного пользователем, и сопоставлении их в инвертированном индексе.Этот процесс является полнотекстовым поиском.
Что такое эластичный поиск
Прежде всего, вам нужно знать, что такое lucene. Lucene — это пакет Java jar, который реализует алгоритм инвертированного индекса и другие вещи, связанные с полнотекстовым поиском. ElasticSearch инкапсулирует lucene. ? Прежде всего, когда объем данных велик, например, 1 ПБ данных, в настоящее время практически невозможно хранить данные на одном компьютере, так как же разделить данные и разместить их на нескольких компьютерах? Затем он становится распределенным.В это время, когда внешний интерфейс данных получает данные, к какой машине он обращается для получения данных? В настоящее время это очень хлопотно.Если определенная машина не работает, то данные на этой машине будут недоступны, что не будет гарантировать высокую доступность, и как хранить данные на этой машине при их сохранении и т. д. и т. д. Все они требуют обработки и обслуживания человеком. В это время появился ElasticSearch, полностью устранивший недостатки lucene.
Несколько примеров преимуществ
- Высокая производительность, автоматическое обслуживание распределения данных по нескольким узлам для создания индекса, а также выполнение поисковых запросов, распределенных по нескольким узлам.
- Высокая доступность, автоматическое обслуживание избыточных копий данных гарантирует, что некоторые машины выйдут из строя без потери данных.
- Он включает в себя более продвинутые функции, чтобы предоставить нам более продвинутую поддержку, позволяя нам быстро разрабатывать приложения, разрабатывать более сложные приложения, сложные функции поиска, функции анализа агрегации и поиск на основе географического местоположения (например, в окрестностях есть несколько кафе в пределах км. ) и так далее.
- Динамическое расширение, когда наш объем данных резко увеличивается, нам нужно только добавить машины.Например, две машины хранят 1,2T данных, тогда ни одна машина не может хранить 600G, но если 600G оказывает слишком большую нагрузку на сервер, на этот раз необходимо добавить третью машину, чтобы каждая из них отвечала за 400G данных.Этот процесс не требует ручного выделения, а нужно только добавить в кластер и он завершится автоматически.