Увидел свет релиз свободной платформы для организации работы поисковых систем Elasticsearch 1.0.0, основанной на технологиях индексации и поиска, предоставляемых движком Lucene. Поисковые сервисы на базе Elasticsearch внедрены в GitHub, Mozilla, WordPress, Sony и StackOverflow. Код Elasticsearch написан на языке Java и распространяется под лицензией Apache. Готовые сборки подготовлены в форматах пакетов RPM и DEB.
Особенности Elasticsearch:
- Поддержка создания распределённых и отказоустойчивых конфигураций. Поисковый индекс может быть распределён на несколько узлов с использованием шардинга. Каждая порция данных индекса, может быть реплицирована на несколько узлов. Операции чтения и поиска могут выполняться на любых узлах, содержащих реплицированные части индекса. Каждая порция данных общего индекса представляет собой полноценный обособленный индекс Lucene;
- Поддержка обслуживания одним экземпляром движка нескольких поисковых служб: поддерживается обработка более одного индекса и более одного типа контента на каждый индекс;
- Для управления и взаимодействия с поисковым сервером может использвоаться как HTTP RESTful API, так и нативный Java API. API абстрагирует все операции по опросу отдельный узлов и агрегации данных, позволяя работать с распределённым индексом, как с единым целым. Клиенты, работающие поверх HTTP RESTful API подготовлены для языков Javascript, PHP, Perl, Python и Ruby.
- Документо-ориентированный подход к хранению атрибутов. Отсутствие необходимости предварительного определения жесткой схемы структуры данных. Схема данных может варьироваться и определяться в привязке к разным типам контента, предоставляя возможность адаптации процессе индексации под свои нужды.
- Поддержка кэширования запросов и пополнения индекса в асинхронном режиме. Наличие средств для сохранения целостности индекса в случае краха сервера;
- Высокая производительность поиска, выполнение запросов со скоростью близкой к обработке данных в реальном времени;
- Обеспечение непротиворечивости операций - все действия на уровне одного документа соответствуют требованиям ACID (атомарность, согласованность, изолированность, надежность).
Ключевые улучшения, добавленные в версии Elasticsearch 1.0:
- Snapshot/Restore API - программный интерфейс для управления созданием/восстановлением резервных копий индексов или всего кластера;
- Гибкие средства для сбора статистики для анализа работы поисковой системы;
- Обратный поиск - вместо поиска всех удовлетворяющих запросу документов, осуществляется определение запросов, подходящих для заданного документа;
- cat API - простой интерфейс для выборки данных, более наглядный для человека, чем JSON;
- Поддержка федеративного поиска, при котором логически объединяются результаты разных поисковых кластеров;
- Поддержка формата Doc values, позволяющем агрегировать данные документов большого размера, за счет промежуточного сохранения полей на диске, без держания их в памяти;
- Механизм отслеживания попыток загрузки слишком больших полей с данными в память, которое могут привести к исчерпанию доступной памяти.