Краткое введение в ElasticSearch, поисковую систему с открытым исходным кодом, распределенной и RESTful, основанную на lucene, и о том, как легко вы можете начать работать с ней.
Поиск решения
Как уже упоминалось в предыдущем посте, выбирая правильное поисковое решение для своего сайта , не стесняйтесь анализировать наиболее подходящее поисковое решение для ваших требований. В следующем разделе мы расскажем о некоторых функциональных возможностях и возможностях, предлагаемых ElasticSearch.
ElasticSearch
Вкратце, ElasticSearch — это система с открытым исходным кодом, распределенная система поиска Schema Less и RESTful, основанная на Lucene . Некоторые из типичных функциональных возможностей ES:
- Распределенный: агрегированные результаты поиска по нескольким осколкам / индексам
- Схема Меньше: ориентирована на документы. Поддерживает формат JSON, поддерживается автоматическое отображение типов.
- RESTful: поддерживает интерфейс REST
- Фасетный поиск: поддержка функции навигационного поиска
- Репликация: поддерживает репликацию индекса
- Отказоустойчивость: репликация и распределенная природа обеспечивают встроенную отработку отказа.
- Почти в реальном времени: поддерживает обновления почти в реальном времени
- Управление версиями: позволяет хранить разные версии документа.
- Перколяция: позволяет регистрировать запросы к индексу, возвращая совпадающие запросы для документа.
- Псевдоним индекса : позволяет создать псевдоним для индексов.
Установка ElasticsSearch
Скачайте последнюю версию ES с сайта, скачайте . Обратитесь к руководству по установке для конкретных шагов окружающей среды. Извлеките ZIP-файл в папку назначения и перейдите в папку установки. Чтобы начать процесс на переднем плане,
|
1
|
$ bin/elasticsearch |
Чтобы начать процесс в фоновом режиме,
|
1
|
$ bin/elasticsearch & |
Запуск ElasticSearch в качестве службы
Загрузите Service Wrapper из репозитория github. Проверьте файл README, чтобы установить оболочку службы.
|
1
|
$ bin/service start/stop |
Установить плагин
Обратитесь к странице Руководства по плагину для получения подробного списка доступных плагинов. Чтобы установить ElasticSearch Head Plugin , перейдите в каталог установки
|
1
|
$ bin/plugin -install mobz/elasticsearch-head |
Чтобы просмотреть установленный плагин, http: // localhost: 9200 / _plugin / head /
Настроить ES-сервер
Обратитесь к странице конфигурации для всех конфигураций. Чтобы изменить настройки сервера, перейдите в каталог установки
|
1
|
$ vi config/elasticsearch.yml |
Измените соответствующие настройки для вашей среды. например. имя кластера для вашего кластера (cluster.name: localtestsearch). Перезапустите сервер, чтобы изменения вступили в силу, и просмотрите плагин head, чтобы увидеть изменения.
Тестирование ES-сервера из командной строки
Обратитесь к онлайн-руководству « Указатель» для создания указателя и добавления документов.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
#Create Index$ curl -XPUT 'http://localhost:9200/twitter/'#Add document "tweet" : { "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elastic Search" }}'#Get document by id$ curl -XGET 'http://localhost:9200/twitter/tweet/1'#Search document$ curl -XGET 'http://localhost:9200/twitter/tweet/_search?q=user:kimchy' |
Тестирование ES-сервера с использованием головного плагина
Просмотр данных индекса с помощью плагина Head, http: // localhost: 9200 / _plugin / head / .
Доступ из Java
Как разработчик Java, вы бы предпочли начать подключение к серверу, используя быстрый тестовый пример или приложение Java. Будьте готовы и начните использовать Java API,
Maven интегратон
Используйте эластичный поиск Java API через Maven зависимость,
|
1
2
3
4
5
|
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>0.20.5</version></dependency> |
Использование Java API
Чтобы подключиться к локально установленному серверу ES,
- создать клиента
- создать индекс и установить настройки и сопоставления для типа документа
- добавить документы в указатель
- получить документ
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
//Create ClientSettings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "localtestsearch").build();TransportClient transportClient = new TransportClient(settings);transportClient = transportClient.addTransportAddress(new InetSocketTransportAddress("localhost", 9300));return (Client) transportClient;//Create Index and set settings and mappingsCreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(indexName);createIndexRequestBuilder.execute().actionGet();//Add documentsIndexRequestBuilder indexRequestBuilder = client().prepareIndex(indexName, documentType, documentId);//build json objectXContentBuilder contentBuilder = jsonBuilder().startObject().prettyPrint();contentBuilder.field("name", "jai");contentBuilder.stopObject();indexRequestBuilder.setSource(contentBuilder);IndexResponse response = indexRequestBuilder .execute().actionGet();//Get documentGetRequestBuilder getRequestBuilder = client().prepareGet(indexName, type, id);getRequestBuilder.setFields(new String[]{"name"});GetResponse response = getRequestBuilder.execute().actionGet();String name = response.field("name").getValue().toString(); |
В последующих постах мы обсудим дополнительные возможности использования Java API.
Интернет документация
Несколько быстрых ссылок на онлайн-документацию ES,
- Глоссарий . Сначала ознакомьтесь с другими глоссариями, которые лучше всего подходят для понятий.
- Руководство : онлайн-руководство , детализирующее различные разделы, а также краткие примеры для начала.
- Блог: раздел « Блог » содержит подробности регулярного обновления.
- Учебники : раздел Учебники охватывает общие концепции использования ES.
- Документы API: Проверьте раздел API Java, содержащий примеры примеров.
- Видео: посмотрите видео на различные темы ES.
- Github: Проверьте различные проекты ElasticSearch на githun, включая примеры и т. Д.
Начиная с основных понятий
Lucene Concepts
Lucene — это библиотека текстового поиска. Ознакомьтесь с основной терминологией Lucene:
- Документ: коллекция полей
- Поле: строковая пара ключ-значение
- Коллекция: комплект документов
- Точность: количество соответствующих документов
- Напомним: количество документов возвращено
- Инвертированный индекс: термин может перечислить число
- документов он содержит
- Блоки Lucene: средство записи индекса, анализатор, токенизатор, анализатор запросов, запрос, поиск индекса и т. Д.
- Индекс и сегменты: индексы, написанные как немодифицируемые сегменты.
- Оценка: релевантность для каждого документа, соответствующего запросу
Обратитесь к онлайн- документации Lucene и Wiki для получения более подробной информации.
Концепции ElasticSearch
- Документ: документ JSON с данными
- Поле: строка на основе пары ключ-значение
- Тип: как таблица в реляционной базе данных
- Индекс: как база данных с несколькими типами
- Отображение: как схема для базы данных
- Распределенная природа: узлы, осколки, реплики и т. Д.
Обратитесь к разделу ElasticSearch Glossary для получения дополнительной информации.