Готовы к новому журналу? Сегодня мы рассмотрим Elasticsearch, что это такое, как он используется, зачем его использовать и в какой момент его следует применять, а также несколько практических примеров в конце. Elasticsearch — это механизм поиска и анализа данных, предназначенный для работы с большими объемами данных.
Что такое ElasticSearch
Согласно официальному сайту Elastic, «Elasticsearch — это распределенный, бесплатный и открытый механизм поиска и анализа данных для всех типов данных, включая текстовые, числовые, геопространственные, структурированные и неструктурированные данные».
Форма хранения, которую он использует для текста, — это структура перевернутого индекса, поиск слова, уникального во всех документах, которые вы сохранили на elastic, когда оно уже получено, при поиске возвращает все документы, в которых есть это уникальное слово во всех документах, которые вы просмотрели. Однако числовые и географические поля хранятся в дереве BKD, а текстовые поля — в инвертированном индексе, как я упоминал выше.
Согласно Stringfixer, «дерево KDB (k-мерное B-дерево) — это древовидная структура данных для разбиения k-мерного пространства поиска. Цель KDB-дерева — обеспечить эффективность поиска сбалансированного kd-дерева, обеспечивая при этом блочно-ориентированное хранение B-дерева для оптимизации доступа к внешней памяти».
Извлечение данных, как это делает RestAPI, является одним из его отличительных особенностей, поскольку RestAPI может выполнить это просто и быстро. API поддерживает структурированные запросы, полнотекстовые запросы и сложные запросы. Запросы создаются с помощью Query DSL (Domain Specific Language) — языка запросов, основанного на json, мы должны представить Query DSL в виде AST (Abstract Syntax Tree). Ниже я приведу, что такое Query DSL и AST, а также краткое описание того и другого.
Для чего используется Elasticsearch?
Благодаря скорости, производительности, масштабируемости, простоте и интеграции с другими инструментами, которыми обладает elastic, его можно использовать для:
- Поиск приложений
- Поиск по сайту
- Корпоративный поиск
- Ведение журналов и аналитика журналов
- Показатели инфраструктуры и мониторинг контейнеров
- APM (мониторинг производительности приложений)
- Анализ и визуализация геопространственных данных
- Аналитика безопасности
- Аналитика корпоративных данных
Что такое Query DSL?
Querydsl — это java-фреймворк, который позволяет генерировать безопасные с точки зрения типов запросы с синтаксисом, похожим на JPQL, SQL и другие поддерживаемые запросы.
Что такое АСТ?
Согласно Twilio «Абстрактные синтаксические деревья или AST — это древовидные представления кода. Они являются фундаментальной частью работы компилятора. Когда компилятор преобразует некоторый код, в основном происходят следующие шаги:»
- Лексический анализ — известен как токенизация
- Анализ синтаксиса — Известен как синтаксический разбор
- Генерация кода
Какие языки программирования поддерживаются в Elasticsearch?
Elasticsearch поддерживает множество языков, к которым относятся:
- Java
- JavaScript (Node.js)
- Перейти
- .NET (C#)
- PHP
- Perl
- Python
- Руби
Время для практики
Поскольку он предоставляет Rest API, он принимает HTTP-запросы, используя четыре глагола GET, POST, PUT и DELETE.
1| endereco_da_api:porta/indice/tipo_do_documento
2| example- http://localhost:9200/futebol/jogador
POST-запрос к uri
Выполняет индексирование документа, данные которого должны быть переданы в виде объекта JSON в теле запроса, пример:
POST http://localhost:9200/futebol/jogador
{
"nome": "Édson Arantes do Nascimento",
"apelido": "Pelé",
"titulos_mundiais": [
"1958",
"1962",
"1970"
]
}
GET-запрос к uri/_search
Возвращает все документы заданного индекса, пример:
GET http://localhost:9200/futebol/jogador/_search
{
"query": {
"match": {
"apelido": {
"query": "Pelé"
}
}
}
}
Запрос PUT к uri/_id
_id должно быть значением идентификационного кода документа. Если _id относится к существующему документу, замените поля документа на JSON-тело запроса.
Запрос DELETE для uri/_id
_id должно быть значением идентификационного кода документа. Если _id относится к существующему документу, физически удаляет документ из индекса, в котором он проиндексирован.
Заключение
Итак, как мы видим, Elastic search очень хорош, это очень интересная тема, способ использования, функции, производительность, которыми он обладает, могут помочь вам в нескольких ситуациях, через которые вы проходите. Жаль, что я не знал об этом раньше, очень рекомендую.
ВСЕ
- Может ли ElasticSearch быть полезным для вас?
- Сталкивались ли вы с проблемами, связанными с объемом больших данных?
- Знаете ли вы другой инструмент лучше, чем этот?
- Применяете ли вы этот инструмент в своей работе? Почему?
Ответьте на вопросы в комментариях.
Это был журнал №16. Сегодня я решил поговорить об Elasticsearch, на следующей неделе я расскажу о Redis, vlw. Давайте попрощаемся здесь. Мы вернемся еще с одним бревном.
Была ли эта статья полезной для вас?
Оставьте комментарий ниже.
Ссылки
- Официальный сайт Elastic
- Эластичная документация
- Пример Python
- Что такое эластичный
- Что такое RestAPI
- Что такое BKD Tree
- O que é Indice Invertido