Что такое эластичный поиск?
Elasticsearch, называемый ES, является полнотекстовой поисковой системой на основе построенного, распределенного, RESTFLAY интерфейса Lucene или распределенной базы данных документов. Родился распределен, высокая доступность, масштабируемость, может хранить, поиск и анализировать много данных за короткий промежуток времени.
Что такое полнотекстовый поиск?
Полнотекстовый поиск, также известный как полнотекстовый поиск, относится к сканированию каждого слова в статье и созданию индекса для каждого слова, чтобы указать номер и позицию слова в статье.После ключевого слова, введенного текущим конечным пользователем инициирует запрос запроса, поисковая система будет искать в соответствии с предварительно установленным индексом и ответит пользователю с результатом запроса. Здесь есть два ключевых слова: сегментация слов и индексация.Elasticsearch выполнит эти две вещи внутри, сегментирует сохраненный текстовый контент в соответствии с правилами и построит индекс для слов после этих сегментаций для запросов пользователей.
Что такое инвертированный индекс?
Индекс, созданный по ключевым словам в процессе полнотекстового поиска, называется инвертированным индексом. Как следует из названия, установление положительной связи «текстовое содержание-ключевое слово» называется прямым индексом, который будет введен позже. инвертированный индекс должен обратить исходное отношение и установить его как отношение «ключевое слово-текстовое содержание», такое отношение очень способствует поиску. Например:
- Текст 1: У меня есть друг, который любит улыбаться
- Текст 2: Сегодня мне приснился сон
Сначала выполняется английское слово, а затем создается инвертированный индекс, получается простое сопоставление отношений «ключевое слово текст» следующим образом:
Ключевые слова | текстовый номер |
---|---|
I | 1,2 |
have | 1,2 |
a | 1,2 |
friend | 1 |
who | 1 |
loves | 1 |
smile | 1 |
dream | 2 |
today | 2 |
С помощью этой таблицы сопоставления при поиске по ключевому слову «есть» можно сразу же вернуть две записи с идентификаторами 1 и 2, а при поиске «сегодня» будет возвращена запись с идентификатором 2. Этот тип производительности поиска очень высок. Конечно, инвертированный индекс, поддерживаемый Elasticsearch, содержит больше информации, и это лишь краткое введение в принцип.
В каких сценариях применяется Elasticsearch?
Общие сценарии
- сцена поиска
Обычный поиск сцен, таких как сайты поставщика электроэнергии, сайты рабочих мест, такие как сайты новостей, поиск в различных приложении. - Сценарии анализа журнала
Классическая комбинация ELK (Elasticsearch/Logstash/Kibana) может выполнять основные функции сбора журналов, хранения журналов и интерфейса запросов для анализа журналов.В настоящее время реализация этого решения очень популярна, и большинство корпоративных систем анализа журналов используют это решение. . - Платформа раннего предупреждения данных и сценарии анализа данных
Например, предупреждение о цене электронной коммерции, установка предупреждения о цене на поддерживаемой платформе электронной коммерции, когда льготная цена ниже определенного значения, вызывает уведомление, чтобы уведомить пользователей о покупке.
Анализ данных является обычным явлением, например, анализ 10 ведущих брендов продаж на платформе электронной коммерции, анализ системы блогов, 10 самых популярных заголовков веб-сайтов, количество комментариев, содержание, количество посещений и так далее. - Коммерческая BI-система
Больше розничных супермаркетов, вам необходимо проанализировать информацию о потреблении пользователей, возрастной группе и ежедневных периодов времени в магазин в первом квартале и выводить соответствующие данные отчета и предсказать горячую продукцию в следующем квартале и рекомендую соответствующую продукты по ориентации возраста., Elasticsearch выполняет анализ данных и раскопок, Kibana делает визуализацию данных.
Общие случаи
- Википедия, энциклопедия Baidu: с функциями полнотекстового поиска, выделения и рекомендаций по поиску.
- переполнение стека: есть полнотекстовый поиск, и вы можете искать решения на основе ключевой информации отчета об ошибке.
- github: найдите нужный ключевой код среди сотен миллиардов строк кода.
- Система анализа логов: Платформа ELK, встроенная в каждое предприятие.
- и т.д
Схема архитектуры Elasticsearch
Краткое объяснение каждого компонента архитектуры:
- Базовая система хранения шлюза, как правило, файловая система, поддерживает несколько типов.
- Распределенный каталог lucence основан на распределенной структуре lucence, которая инкапсулирует реализацию создания инвертированного индекса, хранилища данных, транслога, сегмента и т. д.
- Модульный уровень Основные модули ES, включая индексный модуль, модуль поиска и модуль сопоставления.
- Модуль обнаружения узла кластера обнаружения, используемый для связи между узлами кластера, выбора операций узла координат и поддержки нескольких механизмов обнаружения, таких как zen, ec2 и т. д.
- script Модуль анализа скриптов, используемый для поддержки скриптов, написанных в операторах запросов, таких как безболезненный, заводной, python и т. д.
- Плагины Сторонние плагины, различные расширенные функции могут быть предоставлены плагинами и поддержкой настройки.
- модуль связи transport/jmx, передача данных, нижний уровень использует структуру netty
- Интерфейс, предоставляемый restful/node для доступа к кластеру Elasticsearch.
- Пакет расширения для x-pack elasticsearch, который объединяет функции безопасности, оповещения, мониторинга, построения графиков и отчетности в цельном подключаемом дизайне.
Установка и использование Elasticsearch
Адрес официального сайта
https://www.elastic.co/cn/ Для каждой версии есть адреса загрузки, официальные документы и примеры использования.Пожалуйста, скачайте установочный пакет самостоятельно.
Адрес источника
https://github.com/elastic/elasticsearch имеет исходный адрес каждой версии, вы можете переключиться на указанную версию для исследования, в настоящее время выбрана версия 6.3.1.
шаги установки
- Требования к окружающей среде
JDK 1.8 и выше - Официальный сайт скачать установочный пакет, распакованный прямо в указанную директорию
- Выполните bin/elasticsearch (Linux, обратите внимание, что нельзя использовать учетную запись root)
binelasticsearch.bat(Windows) - curl http://localhost:9200/ или откройте адрес http://localhost:9200/ в браузере и увидите следующий ответ, свидетельствующий об успешном запуске:
{
"name" : "node-1",
"cluster_name" : "hy-application",
"cluster_uuid" : "lJ4DRWOvQauAy-VEYiZc2g",
"version" : {
"number" : "6.3.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "eb782d0",
"build_date" : "2018-06-29T21:59:26.107521Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
- кибана скачать декомпрессию начать
Запустите bin/kibana (Linux, обратите внимание, что нельзя использовать учетную запись root) или binkibana.bat (Windows).Если kibana и elasticsearch развернуты на одном компьютере, используйте файл конфигурации по умолчанию. - Чтобы проверить кибану, введите http://192.168.17.137:5601/ в браузере, и появится следующий интерфейс, указывающий на успешный запуск:
Рисунок II
резюме
В этой статье кратко представлены основные концепции Elasticsearch, применимые сценарии и основные функциональные рамки, а также самые простые шаги по установке и запуску для обучения и проверки.Как начало системы Elasticsearch, Elasticsearch имеет функцию, которую можно использовать вне Для обучения или приложений малого и среднего размера, если объем данных относительно невелик, а операция не очень сложна, вы можете использовать ее напрямую. Последующее обучение Elasticsearch, если не указано иное, использует версию 6.3.1 в качестве примера.
Сосредоточьтесь на Java с высокой степенью параллелизма и распределенной архитектуре, большем обмене техническими галантереями и опытом, пожалуйста, обратите внимание на общедоступный номер: Сообщество архитектуры Java