Это руководство создано для ElasticSearch версии 5.2. Версия 5 содержит ряд кардинальных изменений в отношении DSL запросов и сопоставления.
Если вы все еще используете версию 2.x, обратите внимание на ветку v2 этого репозитория .
Я собрал несколько примеров, чтобы продемонстрировать возможности и мощь ElasticSearch. Большая часть информации основана на «ElasticSearch, The Definitive Guide».
Загрузите ElasticSearch & Kibana здесь, а затем выполните следующие простые шаги:
./bin/elasticsearch
./bin/kibana
Упражнение 1 очень простое, его цель — освоить интерфейс ElasticSearch RESTFul.
Темы:
Нагрузочное упражнение 1
В упражнении 2 мы будем индексировать большое количество данных. Чтобы улучшить производительность, мы делаем это массово.
Эти данные содержат информацию из блога Combell. Я проиндексировал следующую информацию:
Эти данные будут использоваться в других упражнениях.
Массовая загрузка данных блога
В упражнении 3 мы выполняем некоторые базовые запросы, используя DSL запросов ElasticSearch. DSL основан на JSON, а запросы представляют собой полнотекстовый поиск.
Вот несколько поисковых запросов, которые мы выполняем:
Нагрузочное упражнение 3
В упражнении 4 мы сосредоточимся на анализе полнотекстового и человеческого языка. Мы проигнорируем возможности базы данных ElasticSearch, добавим в нее немного текста и посмотрим, как он токенизирует данные.
В зависимости от используемого вами анализатора ElasticSearch будет токенизировать и хранить данные по-разному. Не волнуйтесь, исходные данные останутся в источнике документа, меняется инвертированный индекс.
Нагрузочное упражнение 4
Упражнение 5 посвящено схеме индекса. ElasticSearch позиционируется как бессхемный. На самом деле ElasticSearch угадает схему за вас.
Я покажу вам примеры, когда он угадывает успешно, и примеры, когда нет.
Нагрузочное упражнение 5
Чтобы избежать того, что ElasticSearch неправильно угадает схему, хорошей идеей является явное сопоставление. Упражнение 6 позволит настроить правильное сопоставление для нашего примера блога и повторно вставить данные.
Целые числа и строки будут определены соответствующим образом, а дата будет иметь правильный формат.
Явное отображение будет использоваться в упражнении 7.
Нагрузочное упражнение 6
Два поиска в упражнении 5, которые не увенчались успехом, теперь будут выполнены снова. Благодаря явному сопоставлению вывод будет правильным.
Нагрузочное упражнение 7
В упражнении 8 мы определим еще одно сопоставление для индекса нашего блога. Это сопоставление рассматривает только поле «заголовок» как полнотекстовое. Остальные строки не будут анализироваться и токенизироваться. Они будут храниться «как есть» .
Эти данные будут использованы в упражнении 9.
Нагрузочное упражнение 8
В упражнении 9 я покажу вам разницу между полнотекстовым поиском с использованием запросов и точным совпадением значений с использованием запросов в режиме фильтра.
Сопоставление, выполненное в упражнении 8, обеспечило наличие поля «ключевое слово» в свойстве title. Это означает, что запросы по запросу «title» рассматриваются как полнотекстовый поиск, а логические фильтры в обычном поле «title.keyword» рассматриваются как точное совпадение значений.
В одном из примеров я также покажу, как объединить несколько запросов и фильтров.
Вот что мы будем делать в этом упражнении:
Нагрузочное упражнение 9
Мы снова пересопоставим данные. На этот раз мы будем рассматривать свойство «title» как анализируемое поле. По умолчанию используется «стандартный» анализатор. Поскольку наши данные представлены как на голландском, так и на английском языке, я добавил 2 поля:
Это окончательная версия картографии. В других примерах будет использоваться это сопоставление и данные.
Нагрузочное упражнение 10
Упражнение 11 посвящено анализу текста на основе языка. Упражнение 4 было намеком на анализ данных. Теперь мы фактически выполним поиск, основанный на языковом анализе.
Нагрузочное упражнение 11
В упражнении 12 мы создадим новый индекс «городов» , который будет содержать все города, расположенные в провинции Западная Влаандерен в Бельгии. В индексе хранится название города и его географические координаты.
Явное сопоставление и данные будут использоваться в других упражнениях.
Нагрузочное упражнение 12
В предыдущем упражнении мы создали новый индекс и проиндексировали некоторые географические данные. В упражнении 13 мы фактически выполним поиск по этим данным.
Будут показаны 2 запроса:
Нагрузочное упражнение 13
В упражнении 14 мы загрузим данные в еще один индекс. Этот индекс называется «автомобили» и содержит информацию о продажах автомобилей. Каждая транзакция отслеживает следующую информацию:
Эта информация будет использоваться в упражнении 15.
Нагрузочное упражнение 14
Агрегации — очень мощная функция ElasticSearch. По сути, это похоже на «группировку» в SQL, но гораздо более эффективно. Агрегации являются причиной популярности ElasticSearch в сообществе специалистов по большим данным и наукам о данных.
Вот агрегаты, которые мы выполним в этом упражнении:
Нагрузочное упражнение 15