Краткое введение в 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 Client Settings 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 mappings CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(indexName); createIndexRequestBuilder.execute().actionGet(); //Add documents IndexRequestBuilder indexRequestBuilder = client().prepareIndex(indexName, documentType, documentId); //build json object XContentBuilder contentBuilder = jsonBuilder().startObject().prettyPrint(); contentBuilder.field( "name" , "jai" ); contentBuilder.stopObject(); indexRequestBuilder.setSource(contentBuilder); IndexResponse response = indexRequestBuilder .execute().actionGet(); //Get document GetRequestBuilder 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 для получения дополнительной информации.