Пример ElasticSearch Hello World

Пример ElasticSearch Hello World

image

ElasticSearch - это поисковая и аналитическая система реального времени на основе REST с открытым исходным кодом. Его основная функция поиска построена с использованием Apache Lucene, но поддерживает многие другие функции.

Он написан на языке Java. Он поддерживает хранение, индексирование, поиск и анализ данных в режиме реального времени. Как и MongoDB, ElasticSearch также является хранилищем данных NoSQL на основе документов.

Note
Веб-сайт ElasticSearch:www.elastic.co. Последней версией ElasticSearch является 5.2.1, выпущенная 14 февраля 2017 года.

Возможности ElasticSearch: -

  • Открытый исходный код

  • Поддерживает простой и эффективный полнотекстовый поиск

  • Поддерживает API на основе REST (JSON через HTTP)

  • Поддерживает поиск в реальном времени и аналитику

  • По определению, распределенный

  • Поддерживает функцию мультиарендности

  • Поддержка облачных сред и сред больших данных

  • Поддерживает кроссплатформенность

  • Денормализованное хранилище данных NoSQL

Преимущества или преимущества ElasticSearch: -

  • Открытый исходный код

  • Легкость с REST API

  • Высокая доступность. Легко и масштабируемо

  • Поддерживает кеширование данных

  • Схема бесплатно

  • Быстрый поиск

  • Поддерживает как структурированные, так и неструктурированные данные

  • Поддерживает распределенную архитектуру, сегментирование, репликацию, кластеризацию и многоузловую архитектуру.

  • Поддерживает массовые операции

  • Создавайте диаграммы и информационные панели в кратчайшие сроки

Недостатки или ограничения ElasticSearch: -

  • НЕ поддерживает операции MapReduce

  • Не используется в качестве основного хранилища данных

  • Не совместимое с ACID хранилище данных

  • Не поддерживает транзакции и распределенные транзакции

  • НЕ имеет встроенной функции аутентификации или авторизации

Популярные клиенты, использующие ElasticSearch: -

  • Github.com, Quora.com, Stackoverflow.com

  • eBay, DELL, Cisco, Mozilla, Викимедиа

  • Netflix, Symatics, Facebook

  • UK HMRC (HM Revenue & Customs)

Например, Github.com использует ElasticSearch для поиска файлов, истории, номеров билетов и т. Д. Большинство компаний используют стек ELK для управления своими журналами и мониторинга своих систем. ELK означает ElasticSearch Logstash и Kibana.

Note
Вы можете найти другие варианты использования клиента наhttps://www.elastic.co/use-cases

1. Установить ElasticSearch локально

Note
Как известно, ElasticSearch написан на Java. Итак, у нас должен быть Java / JRE в нашем системном пути для его использования. Пожалуйста, установите и настройте Java Environment должным образом.

Чтобы установить ElasticSearch в локальную файловую систему, следуйте этим инструкциям.

1.1 Download ElasticSearch from https://www.elastic.co/downloads/elasticsearch

1.2 Windows

  • Загрузите и распакуйте Zip-файл в локальную файловую систему: elasticsearch-5.2.1.zip

  • Извлеченный Zip-файл в F: \ elasticsearch-5.2.1

  • Задать переменную среды

     PATH = F:\elasticsearch-5.2.1\bin

Начать ElasticSearch

     F:/>elasticsearch.bat

image

Получите доступ к ElasticSearch с помощьюhttp://localhost:9200 из браузера. Мы можем использовать Ctrl + C, чтобы остановить ElasticSearch из командной строки CMD.

1.3 Ubuntu Linux: Install with tar file

  • Загрузите и распакуйте файл Tar в локальную файловую систему

    tar -xvf elasticsearch-5.2.1.tar.gz

Начать ElasticSearch

    $ ./elasticsearch

Доступ к ElasticSearch с помощьюhttp://localhost:9200 из браузера

1.4 Ubuntu Linux: Install with commands

  • Выполните следующую команду, чтобы загрузить ElasticSearch

    $ sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.1.deb

Он загружает DEB-файл ElasticSearch: elasticsearch-5.2.1.deb

Выполните следующую команду dpkg, чтобы установить ElasticSearch

    $ sudo dpkg -i elasticsearch-5.2.1.deb

По умолчанию он устанавливает ElasticSearch по адресу «/ usr / share / elasticsearch».

Начать ElasticSearch

    $ ./elasticsearch

Доступ к ElasticSearch с помощьюhttp://localhost:9200 из браузера

Note
Номер порта ElasticSearch по умолчанию:9200. При необходимости мы можем изменить этот номер порта.

1.5 After ElasticSearch is started, access the default URL, we will get the following default Response

Браузер:http://localhost:9200

{
  "name" : "rBvi0Hs",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "kOQQ_nqfTW-b4vQ00XSvdg",
  "version" : {
    "number" : "5.2.1",
    "build_hash" : "db0d481",
    "build_date" : "2017-02-09T22:05:32.386Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.1"
  },
  "tagline" : "You Know, for Search"
}

Note
Исходный код ElasticSearch можно найти вhttps://github.com/elastic/elasticsearch

2. Основы URL-адреса REST API ElasticSearch

URL-адрес REST API ElasticSearch должен иметь следующий формат.

image

Here

  • Сервер означает любое имя сервера или имя хоста, например «myserver». Иногда мы используем номер узла + порта, например «myhost: 9999».

  • Индекс должен быть в нижнем регистре, иначе возникает исключение.

  • Рекомендуется использовать Type также в нижнем регистре.

Мы обсудим больше об этом использовании REST API и исключениях с некоторыми примерами в следующих разделах.

3. Терминология ElasticSearch

Мы обсудим несколько важных терминов ElasticSearch:Index,Type,Document,Key,Value и т. Д.

3.1 What is an Index in ElasticSearch?
В ElasticSearch индекс - это набор документов. Например, «книжный магазин» - это Документ. Индекс используется для индексации, поиска, обновления и удаления документов. Это должно быть в нижнем регистре.

Индекс похож на базу данных в мире баз данных отношений.

3.2 What is a Type in ElasticSearch?
В ElasticSearch Тип - это категория похожих документов. Это означает, что мы можем сгруппировать набор похожих документов в Тип. Как мы знаем в реальном мире, «книжный магазин» содержит различные виды предметов: коллекция «Книг», коллекция ручек, карандашей, компакт-дисков и т. Д. Таким же образом документ «книжный магазин» (один из видов указателя) может содержать коллекцию типов: книги, ручки, компакт-диски и т. Д.

Тип аналогичен таблице в мире базы данных отношений.

3.3 What is a Document in ElasticSearch?
В ElasticSearch документ - это экземпляр типа. Он содержит ярмарки данных с ключами и значениями. Например, «title»: «Функциональное программирование в Java» - это ярмарка Ключ: Ценность документа типа «Книги». У каждого документа есть идентификатор.

Документ похож на строку в таблице в мире базы данных отношений. Ключ - это имя столбца, а значение - значение столбца.

4. Основы команд ElasticSearch

Как мы знаем, ElasticSearch поддерживает API на основе REST (JSON Over HTTP Protocol) для поддержки операций CRUD (Create Read Update Delete). Он использует методы HTTP для выполнения своих операций.

Метод HTTP-запроса использование

GET

Чтобы получить, выбрать или прочитать данные из ElasticSearch

POST

Для создания или обновления данных в ElasticSearch

PUT

Для создания или обновления данных в ElasticSearch

УДАЛЯТЬ

Чтобы удалить или удалить существующие данные из ElasticSearch

Note
Для тестирования операций ElasticSearch мы можем использовать любые клиенты REST, такие как POSTMAN, Fiddler, команду CURL, Sense и т. д. Я собираюсь использоватьGoogle Chrome POSTMAN, чтобы изучить REST API ElasticSearch. You can install POSTMAN or Sense as Chrome Extensions.

5. ElasticSearch CRUD Операции

Давайте разработаем функцию поиска для веб-сайта Mkyong.com с помощью ElasticSearch для поиска сведений о сообщениях, сведений об авторе и т. Д.

5.1 CREATE Operation Example
Чтобы вставить новый документ с/techfou/posts/1001 и следующими данными запроса:

{
  "title": "Java 8 Optional In Depth",
  "category":"Java",
  "published_date":"23-FEB-2017",
  "author":"Rambabu Posa"
}

Здесь 1001 - это идентификатор документа. Он используется для однозначной идентификации.

image

Описание:-

  • Чтобы создать новый документ, мы используем метод запроса HTTP POST.

  • Наш узел: Номер порта:http://localhost:9200

  • Название индекса: techfou

  • Название типа: сообщения

  • В качестве типа тела запроса как JSON или добавьте заголовок запроса: «Content-Type»: «application / json»

  • Нажмите кнопку «ОТПРАВИТЬ» для ответа.

  • Мы можем наблюдать следующие пары ключ: значение в данных ответа.

"_index":"example"
"_type":"posts"
"result":"created"
"created":true

Мы можем наблюдать следующие журналы в командной строке CMD.

[2017-02-26T21:10:33,941][INFO ][o.e.c.m.MetaDataCreateIndexService] [aH4GiIP] [example] creating index, cause [auto(index api)], templates [], shards [5]/[1], mappings []
[2017-02-26T21:10:35,790][INFO ][o.e.c.m.MetaDataMappingService] [aH4GiIP] [example/KJsGZgF-Try0k4OHWAgARQ] create_mapping [posts]

Таким же образом вставьте следующие документы:

"/example/posts/1002"
{
  "title": "Elastic Search Basics",
  "category":"ElasticSearch",
  "published_date":"03-MAR-2017",
  "author":"Rambabu Posa"
}
"/example/posts/1003"
{
  "title": "Spring + Spring Data + ElasticSearch",
  "category":"Spring",
  "published_date":"11-MAR-2017",
  "author":"Rambabu Posa"
}
"/example/posts/1004"
{
  "title": "Spring + Spring Data + ElasticSearch",
  "category":"Spring Boot",
  "published_date":"23-MAR-2017",
  "author":"Rambabu Posa"
}

5.2 READ Operation Example
Чтобы читать, запрашивать или выбирать данные из ElasticSearch, мы должны использовать «_search» в конце URL-адреса REAT API.

image

Описание:-

  • Вы можете увидеть «_search» в URL-адресе.

  • Ответ показывает: «Всего»: 4 (Всего найдено 4 записи с этим индексом и типом.)

5.3 READ Operation With Query Parameters Example
Мы можем использовать параметры запроса, используя синтаксис «? q =:» в Query для фильтрации записей.

image

Описание:-

  • Мы можем наблюдать следующие пары ключ: значение в данных ответа. Он сообщает всего одну запись, найденную в этом поиске.

"total":"1"
"_id":"1002"

5.4 UPDATE Operation Example
Хотел бы обновить существующие данные документа, как показано ниже:

image

Описание:-

  • Мы можем наблюдать следующие пары ключ: значение в данных ответа. Он сообщает, что документ обновлен, но не создан.

"result":"updated"
"created":"false"

Проверить тот же документ

image

5.5 DELETE Operation Example
Хотел бы удалить один документ, у которого_id = 1004

image

Описание:-

  • Мы можем наблюдать следующие пары ключ: значение в данных ответа. Он сообщает, что документ успешно удален.

"result":"deleted"
"successful":"1"

6. Индекс должен быть в нижнем регистре

Как мы уже говорили, индекс должен быть в нижнем регистре. В противном случае выдается ошибка, как показано ниже:

image

Поскольку мы НЕ используем индекс: «Mkyong» в нижнем регистре, он выдает очень значимое сообщение об ошибке: «Недопустимое имя индекса [Mkyong], должно быть в нижнем регистре».

Note
Тип может быть в верхнем регистре, но это не рекомендуется.