Статьи

Начало работы с ElasticSearch

Краткое введение в 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
 
#Add document
    "tweet" : {
        "user" : "kimchy",
        "post_date" : "2009-11-15T14:12:12",
        "message" : "trying out Elastic Search"
    }
}'
 
#Get document by id
 
#Search document

Тестирование 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 для получения дополнительной информации.

Ссылка: Начало работы с ElasticSearch от нашего партнера JCG Яибира Малика в блоге Jai на блоге.