[Третья годовщина ES] Elasticsearch Cognition
[Третья годовщина ES] Elasticsearch Cognition

1. Следующие три проблемы необходимо решить в сфере больших данных

  • Как хранить данные

Традиционные реляционные базы данных (MySQL, Oracle, Access и т. д.) доминировали в модели хранения данных в 20-м веке. Однако, когда объем данных достигает уровня терабайтов или даже петабайтов, реляционная база данных представляет собой трудную проблему. решить. Чтобы решить проблему массового хранения данных и распределенных вычислений, Google Tab предложила решения Map/Reduce и Google File System (GFS). В качестве одной из превосходных сред реализации Hadoop быстро получил признание и широко используется в отрасли. Однако модель хранения Hadoop определяет, что она не поддерживает извлечение и вычисление данных в реальном времени. Есть ли другие альтернативы? Почему бы не попробовать возможности распределенного хранилища Elasticsearch?

  • Как получить данные

В сегодняшнюю эпоху Интернета ценность информации во многом зависит от того, можно ли ее распространять и получать в режиме реального времени. В огромном хранилище данных как быстро получить небольшое количество полезных данных — проблема, которую необходимо решить. Возможность получения данных в режиме реального времени зависит от формата хранения данных. Существует ли какое-либо простое и удобное в использовании решение для сбора данных в режиме реального времени? Почему бы не попробовать возможности поиска Elasticsearch в реальном времени?

  • Как представить данные

Является ли хранение и извлечение данных конечной целью? Конечно, нет! Реальная ценность и конечная цель данных — обеспечить надежную поддержку бизнес-решений. С этой целью необходимо выявить характерные закономерности данных и представить их в удобной форме лицам, принимающим решения, которые могут не разбираться в технологиях. Какая форма представления данных является наиболее убедительной и легкой для принятия и понимания лицами, принимающими решения? Конечно, это графики и таблицы. Как говорится, картинка стоит тысячи слов! Существуют ли готовые решения для интеллектуального анализа и визуализации данных? Почему бы не попробовать Kibana, платформу визуализации на основе Elasticsearch?

2. обзор эластичного поиска

  • Elasticsearch (сокращенно ES) — это масштабируемая распределенная полнотекстовая поисковая система с открытым исходным кодом, обеспечивающая многопользовательские возможности. Это также поисковый сервер Lucene, который может хранить и искать данные практически в реальном времени. В среде облачных вычислений Elasticsearch может осуществлять поиск данных в реальном времени, его производительность очень стабильна, а также он очень удобен в установке и использовании. Elasticsearch может осуществлять поиск данных в реальном времени, его производительность очень стабильна, а также он очень удобен в установке и использовании. Elasticsearch можно использовать в Java, .NET, PHP, Python, Apache Groovy, Ruby и других языках программирования. Согласно рейтингу DB-Engines, Elasticsearch является одной из самых популярных корпоративных поисковых систем.
  • Elasticsearch можно легко использовать для поиска и анализа больших объемов данных. Использование всех преимуществ горизонтальной масштабируемости Elasticsearch может сделать данные более ценными в производственной среде.
  • Elasticsearch — это хорошо масштабируемое (расширяемое) хранилище данных с открытым исходным кодом, механизм полнотекстового поиска и анализа данных. Он часто используется в качестве основного механизма для приложений со сложными возможностями поиска и аналитическими потребностями.
  • В настоящее время многие приложения имеют функции поиска. Являясь «старой» библиотекой поддержки технологии поиска, Lucene предоставляет множество функций, которые можно использовать для обработки текстовых данных. Однако использование Lucene для настройки поисковой системы требует от пользователей большого количества знаний о поисковых системах, а требования к пользователям очень высоки. Более того, Lucene обеспечивает только базовую поддержку поисковых систем и не поддерживает распространение, отказоустойчивость. и характер поиска в реальном времени.
  • ES — это распределенная поисковая система, работающая в квазиреальном времени, основанная на Lucene. Среди множества предоставляемых ею функций одним из основных преимуществ является хорошая производительность в режиме реального времени. Так что же такое хорошая производительность в реальном времени? В общих бизнес-требованиях поиск вновь добавленных данных занимает не менее 1 минуты, но в ES поиск вновь добавленных данных может осуществляться в течение нескольких секунд или даже 1 секунды.
  • Помимо хорошей производительности в реальном времени, ES также предоставляет множество отличных функций. Например, ES представляет собой распределенную архитектуру, когда один или небольшое количество компьютеров не могут хорошо выполнять задачу поиска, ее можно расширить до достаточного количества компьютеров для поиска. Раньше при использовании Lucene пользователи должны были иметь компьютер; Основа языка Java, а ES предоставляет интерфейс API в стиле REST, позволяющий пользователям использовать HTTP для выполнения запросов к ES на любом языке для выполнения задач поиска; сам ES также предоставляет функцию агрегирования, которую пользователи могут использовать для выполнения статистического анализа. данные в индексе. С точки зрения безопасности данных ES предоставляет X-Pack для аутентификации пользователей;
  • Сегодня ES является не только фреймворком для поисковых систем, но также официально предоставляет «семейное ведро» ELK, которое обеспечивает хорошее решение для создания поисковых систем. Среди них E означает Elasticsearch, который в основном обеспечивает функции поиска и анализа данных; L означает Lonstash, с помощью которого структурированные или неструктурированные данные, такие как базы данных и журналы, можно легко импортировать в ES. K означает Kibana, который может графически анализировать; Результаты анализа. Кроме того, вы можете использовать предоставляемые им инструменты разработки для выполнения запрошенного взаимодействия с ES.

3. Сравнение Elasticsearch и Solr

Когда мы говорим об Elasticsearch, мы обязательно будем думать о Solr. Вот некоторые различия между Elasticsearch и Solr.

  • Elasticsearch прост в развертывании и установке и поставляется с распределенными функциями координации и управления, тогда как Solr необходимо полагаться на Zookeeper для распределенной координации и управления;
  • Elasticsearch в основном работает «из коробки» и его можно использовать после распаковки, условно говоря, Solr использовать сложнее;
  • Solr поддерживает файлы в нескольких форматах данных, таких как JSON, XML, CSV и т. д., тогда как Elasticsearch поддерживает только файлы в формате данных JSON.
  • Скорость поиска данных у Solr высокая, но скорость вставки и удаления данных относительно низкая. В основном она используется для платформ и приложений электронной коммерции с большим количеством поиска данных, в то время как скорость создания индекса (вставки данных) и поиска данных в Elasticsearch невысока. относительно быстро.
  • Solr — это традиционное решение для поисковых приложений, а Elasticsearch больше подходит для поиска, работающего практически в реальном времени.
  • Функции, предоставляемые Solr, сложны; Elasticsearch фокусируется на основных функциях, а большинство расширенных функций предоставляются сторонними плагинами. Например, графический интерфейс требует поддержки Kibana.

4. Сравнение Elasticsearch и реляционных баз данных

Прикладным системам обычно необходимо использовать продукты обработки данных для удовлетворения требований по ускорению запросов к данным. Основные продукты обработки данных в отрасли делятся на две категории: одна — традиционная реляционная база данных, а другая — нереляционная база данных. ES — это нереляционная база данных. Прежде чем решить, использовать ли ES или реляционную базу данных, необходимо сначала сравнить эти две разные категории продуктов.

  • Индексный режим

Большинство индексов в реляционных базах данных представляют собой структуры B-дерева, тогда как ES использует инвертированные индексы. Два разных метода индексирования данных определяют разницу в производительности и скорости между двумя продуктами в определенных сценариях. Например, при выполнении простейшего запроса подсчета в таблице реляционных данных, содержащей сотни миллионов данных, время ответа реляционной базы данных может составлять несколько секунд. Если конструкция таблицы данных неразумна, вся реляционная база данных может быть даже перетянута. сбой, затрагивающий другие службы данных; хотя ES может возвращать данные на уровне миллисекунд, запрос оказывает минимальное влияние на весь кластер. Другой пример: одним из требований является распределение, и реляционная база данных должна полагаться на другие компоненты для выполнения такого типа запроса. Результаты запроса могут удовлетворять только сопоставлению, но не могут быть оценены и отсортированы в соответствии с соответствием. Чэнду ES построен на основе; на основе Lucene, и он по своей сути способен выполнять сопоставление сегментов слов, поддерживает несколько алгоритмов оценки и сортировки, а также поддерживает определяемые пользователем сценарии сортировки.

  • Сопровождение сделок

Транзакции являются основными строительными блоками реляционных баз данных, но ES не поддерживает транзакции. Когда ES обновляет документ, он сначала считывает документ, изменяет его, а затем повторно индексирует документ. Если к одному и тому же документу поступает несколько одновременных запросов, существует высокая вероятность того, что операция обновления будет потеряна. Для решения этой проблемы ES использует оптимистическую блокировку, которая предполагает, что конфликтов не произойдет и не блокирует операцию обновления текущих данных. Каждое обновление будет увеличивать номер версии текущего документа. Последние данные определяются. последняя версия документа. Этот механизм определяет, что ES не имеет управления транзакциями. Поэтому, если вам нужны точные запросы о наличии продуктов или поддержка основных параллельных операций финансовых систем, то реляционные данные — хороший выбор.

  • SQL и DSL

И SQL, и DSL имеют свои собственные грамматические структуры, которые являются языковыми выражениями для взаимодействия с пользователями. SQL — это язык, используемый реляционными базами данных, главным образом потому, что логика SQL-запросов относительно проста и понятна, обычно это операции сравнения, такие как размер и равенство, а также логические и/или нереляционные операции. ES не только включает в себя вышеуказанные операции, но также поддерживает поиск сложных данных, таких как текстовый поиск и поиск географического местоположения. Поэтому ES использует запросы DSL для передачи запросов. Хотя более поздние версии ES начали поддерживать запросы SQL, если вам необходимо выполнить более сложные требования по поиску данных, будет удобнее и быстрее использовать запросы DSL.

  • Режим расширения

Предположим, что по мере роста нашего бизнеса наши данные быстро увеличиваются в несколько раз или даже в десятки раз. Именно здесь вам нужно подумать, насколько легко масштабировать продукт данных. Расширение реляционной базы данных требует использования сторонних компонентов для полной поддержки подбазы данных и подтаблицы. Сегментирование подбаз данных и таблиц означает разбиение данных по определенному идентификатору и последующее распространение их на разные узлы данных, чтобы разделить нагрузку на кластер. Однако существует множество стратегий сегментирования баз данных и таблиц, и пользователям необходимо хорошо разбираться в бизнес-данных, чтобы сделать правильный выбор. Кроме того, сегментирование баз данных и таблиц приведет к задержкам в некоторых компаниях, например при объединении результатов запросов и объединении операций над несколькими таблицами. Сам ES поддерживает сегментирование. Если количество сегментов установлено соответствующим образом на ранней стадии, нет необходимости слишком беспокоиться о расширении на более позднем этапе. Даже если нагрузка на кластер высока, можно добавлять узлы и сегменты реплик. позже. Способ решения.

  • Скорость запроса данных

При небольшом количестве полей и записей запросы к традиционным реляционным базам данных выполняются очень быстро. Если одна таблица имеет сотни полей и миллиарды записей, скорость запроса будет относительно низкой. Хотя это можно облегчить с помощью индексации, по мере увеличения объема данных скорость запросов все равно будет становиться все медленнее и медленнее. ES — это поисковая система, основанная на библиотеке Lucene и поддерживающая индексацию по всем полям. В ES нет проблем хранить сотни полей или миллиарды записей в одном индексе, и скорость выполнения запросов не замедлится.

  • Данные в режиме реального времени

Реляционные базы данных хранят и запрашивают данные практически в режиме реального времени, то есть отдельный фрагмент данных может быть запрошен сразу после его записи. Чтобы повысить производительность записи данных, ES добавляет слой системного кэша между памятью и диском. После того как ES ответит на запрос на запись данных, он сначала сохранит данные в памяти. В это время поиск данных невозможен. Данные в памяти обновляются в системном кэше время от времени (по умолчанию — 1 с), а затем данные можно искать. Следовательно, запись данных ES происходит не в реальном времени, а в квазиреальном времени.

5. Почему вам следует изучить Elasticsearch?

  • В современной индустрии программного обеспечения функция поиска является основной функцией программных систем или платформ, и Elasticsearch может обеспечить хороший поиск соответствующего программного обеспечения.
  • Elasticsearch обладает очень мощными возможностями анализа данных. Хотя Hadoop также может выполнять анализ больших данных, он не обладает такими мощными возможностями анализа, как Elasticsearch.
  • Elasticsearch прост в использовании и может быть установлен на ПК или развернут в производственной среде.
  • Все крупные отечественные интернет-компании используют Elasticsearch. Кроме того, соответствующие облачные продукты Elasticsearch также доступны на облачных платформах Tencent и Alibaba (Tencent Cloud и Alibaba Cloud).
  • В сегодняшнюю эпоху больших данных только благодаря возможностям поиска и анализа в режиме, близком к реальному времени, предприятия могут иметь основную конкурентоспособность и получить представление о будущем.

6.Основные функции elasticsearch

  • Распределенное хранилище и управление кластерами больших объемов данных позволяют добиться высокой доступности сервисов и данных, а также горизонтального расширения системной архитектуры.
  • Возможности поиска данных почти в реальном времени могут обрабатывать и анализировать структурированные данные, полнотекстовые данные, данные о географическом местоположении и другие типы данных.
  • Функция анализа больших объемов данных в реальном времени и различные мощные функции агрегирования.

7. Сценарии корпоративного использования Elasticsearch

  • Википедия использует Elasticsearch для обеспечения полнотекстового поиска (для выделения искомых фрагментов), а также функций полнотекстового поиска по мере ввода и поиска по запросу.
  • The Guardian использует Elasticsearch для объединения данных социальных сетей с журналами посетителей, чтобы предоставлять редакторам публичные отзывы о новых статьях в режиме реального времени.
  • Stack Overflow интегрирует запросы географического местоположения в полнотекстовый поиск и использует более похожий на этот интерфейс для поиска связанных вопросов и ответов.
  • GitHub использует Elasticsearch для запроса 130 миллиардов строк кода

8. сценарии применения Elasticsearch

  • Вы управляете интернет-магазином и позволяете своим клиентам искать товары, которые вы продаете. В этом случае вы можете использовать Elasticsearch для хранения всего вашего каталога продуктов и инвентаря и предоставить им возможности поиска и автозаполнения поисковых запросов.
  • Вы хотите собрать данные журналов или транзакций и проанализировать их, чтобы обнаружить тенденции, статистические характеристики, сводные данные или аномалии. В этом случае вы можете использовать Logstash (компонент Elastic Stack) для сбора, агрегирования и анализа ваших данных, а затем использовать Logstash для импорта обработанных данных в Elasticsearch. Как только данные попадут в Elasticsearch, вы сможете найти в них любую интересующую вас информацию посредством поиска и агрегирования.
  • Вы используете платформу оповещения о ценах, которая позволяет вам установить правило для чувствительных к цене клиентов, например: «Я заинтересован в покупке определенного электронного гаджета, если цена на гаджет упадет ниже определенной цены у любого поставщика в течение следующего месяца». , я хотел бы получить уведомление». В этом случае вы можете получить цену поставки, отправить ее в Elasticsearch и использовать ее функцию обратного поиска (фильтрацию, также называемую запросом диапазона), чтобы сопоставить движение цены с запросом клиента, и в конечном итоге отправить предупреждение, когда будет найдено совпадение. нашелся среди клиентов.
  • У вас есть потребности в аналитике или бизнес-аналитике, и вы хотите иметь возможность быстро исследовать, анализировать, визуализировать и задавать конкретные вопросы по большим объемам данных (миллионы или миллиарды записей). В этом случае вы можете использовать Elasticsearch для хранения данных, а затем использовать Kibana (часть Elastic Stack) для создания пользовательской информационной панели для визуализации важных для вас размеров данных. Кроме того, вы можете использовать возможности агрегирования Elasticsearch для выполнения сложных запросов к вашим данным.
  • Поиск по сайту, поиск кода и т.д.
  • Возможности поиска данных почти в реальном времени могут обрабатывать и анализировать структурированные данные, полнотекстовые данные, данные о географическом местоположении и другие типы данных.
  • Функция анализа больших объемов данных в реальном времени и различные мощные функции агрегирования.
  • Управление журналами, анализ журналов, мониторинг индикаторов безопасности журналов, сканирование веб-страниц и анализ общественного мнения и т. д.
  • Используя высокопроизводительные функции распределенного развертывания Elasticsearch, вы можете анализировать и обрабатывать большие объемы данных бизнес-заказов. Вы также можете использовать функции агрегирования и возможности анализа Elasticsearch для создания различных отчетов по данным.
  • поисковая система
    • Нет сомнений в том, что ES лучше всего действует в качестве поисковой системы. В этом типе сценария более типичной областью применения является вертикальный поиск, такой как поиск в электронной коммерции, поиск по картам, поиск новостей и другие поиски по веб-сайтам.
    • При создании индекса модуль бизнес-системы сохраняет данные в базе данных, а сторонний модуль синхронизации данных (например, Canal) отвечает за синхронизацию данных в базе данных с ES согласно бизнес-требованиям. При поиске интерфейсное приложение сначала инициирует запрос поиска к модулю поиска, а затем модуль поиска организует поиск DSL для инициирования запроса к ES, отвечает на запрос модуля поиска о начале поиска и отправляет искомое. информация о продукте (например, название, цена, географическое положение и т. д.) инкапсулируется, а затем передается в модуль поиска, а затем данные передаются из модуля поиска во внешний интерфейс для отображения.
  • Система рекомендаций
    • ES представил многомерный векторный тип данных в более высоких версиях (версия 7.0 и выше). Векторы продукта и пользователя, рассчитанные по алгоритму модели рекомендаций, могут быть сохранены в индексе ES. При запросе в режиме реального времени вектор пользователя загружается и используется сценарий ES. Score Запрос выполняется так, чтобы окончательный рейтинг каждого документа был равен сходству между текущим вектором пользователя и текущим вектором документа. Чтобы удовлетворить потребности одновременного расчета векторов в реальном времени и фильтрации данных в реальном времени, вы можете использовать Script Добавьте фильтр (то есть условия фильтрации, такие как запасы, состояние на полке и т. д.) в запрос оценки.
  • вторичный индекс
    • В некоторых сценариях часть данных является транзакционной или данные необходимо связать с несколькими таблицами, прежде чем их можно будет получить. Этот тип данных не подходит для представления в качестве окончательных данных в ES. СУБД. Если вам также необходимо выполнить запрос с использованием любой комбинации полей или выполнить поиск на основе определенных текстовых полей, и эти поля слабо транзакционны, вы можете рассмотреть возможность использования ES в качестве вторичного индекса. Данные хранятся в СУБД. При построении индекса ES он содержит только поля запроса. Первичный ключ в СУБД сохраняется только в ES без создания индекса. Эти первичные ключи существуют в индексе СУБД и называются первичными индексами. Индекс, состоящий из полей запроса, в ES называется вторичными индексами. При выполнении запроса клиент может передать запрос в ES. ES запрашивает индекс и возвращает первичный ключ записи, которая соответствует условиям. Затем клиент запрашивает СУБД для получения данных в реальном времени на основе возвращенного первичного ключа. записи.
  • Анализ журналов
    • ES обладает мощными возможностями запросов и поддерживает различные комбинации запросов любого поля. В то же время он обладает очень мощными возможностями статистики и анализа данных, поэтому его также можно использовать в качестве механизма анализа данных. Семейство сегментов ELK (Elasticsearch+Logstash+Kibana), официально предоставляемое ES, может выполнять сбор журналов, создание индексов и визуальный анализ данных, что позволяет пользователям выполнять строительные работы без использования кода. Типы анализа журналов, поддерживаемые ES, могут быть разнообразными. Журналы поведения пользователей, журналы веб-контейнера, журналы вызовов интерфейса, журналы базы данных и т. д. в производственной среде можно анализировать с помощью ELK. Архитектура ELK-Stack, предоставленная официальным сайтом ES, новым участником которого является Beats, позиционируется как легкий однофункциональный сборщик данных.
boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.