Как мы делали поиск в elasticsearch на vulners.com
Как мы писали ранее, в качестве основной базы для поиска на сайте используется elasticsearch. Поиск в elastic работает очень быстро и из коробки доступно много полезных функций для работы с данными — полнотекстовый поиск, неточный поиск, всевозможные методы агрегации и тд.
И в отличии от классических SQL баз данных или noSQL типа MongoDB здесь очень удобно делать неточный поиск по всему документу. Для этого используется синтаксис Query DSL. Для полнотекстового поиска по всему документу есть несколько поисковых запросов. У себя на сайте мы используем тип query_string. Этот запрос поддерживает Lucene синтаксис, который позволяет и нам и пользователю создавать сложные запросы в google-style. Вот примеры таких запросов:
title:apache AND title:vulnerability
type:centos cvss.score:[8 TO 10]
Можно сделать вот такой простой запрос и все:
{ "query": { "query_string": { "query": "exploit wordpress" } }}
Но начав впервые использовать query_string, вы столкнетесь с тем, что поиск выдает не то, что вы хотите видеть. Как же добиться от elasticsearch внятного результата поиска?
Читать дальше →
Источник: Хабрахабр
Похожие новости
- Ландшафт угроз информационной безопасности последних лет. Часть 2
- Реализация SHA256 и SHA512 на языке RUST
- Вспомнить за майские: 20 шагов для апгрейда информационной безопасности
- (Не) безопасный дайджест: открытый сервер, морская утечка и атака на цепочку поставок
- Неожиданности IPv6, или почему тупят Instagram и WhatsApp через прокси и VPN
- [Перевод] Бэкдор в основной версии xz/liblzma, ведущий к компрометации SSH-сервера
- Раскрываем секретные функции: магия макросов в Burp Suite
- AITU Military CTF 2024: История о том, как мой сон привел к поднятию киберполигона в стенах моего университета. Часть 1
- Объявлены победители RUWARD AWARD 2024
- Виртуальное повышение. Эскалируем привилегии в VirtualBox