Запознаване с Elasticsearch стъпка по стъпка

Здравейте!
Днес ще говорим за движка за пълен текстов търсене Elasticsearch (по-нататък ES), с който
работи платформата Docsvision 5.5.

Запознаване с Elasticsearch стъпка по стъпка

1. Инсталация

Можете да изтеглите актуалната версия на следния линк: www.elastic.co/downloads/elasticsearch
Скрийншот на инсталатора по-долу:
Запознаване с Elasticsearch стъпка по стъпка

2. Проверка на работоспособността

След завършване на инсталацията отидете на адреса
http://localhost:9200/
Трябва да се появи страница със състоянието на ES, пример по-долу:
Запознаване с Elasticsearch стъпка по стъпка

Ако страницата не се е отворила, уверете се, че услугата Elasticsearch е стартирана. В Windows това е
услугата Elasticsearch.
Запознаване с Elasticsearch стъпка по стъпка

3. Свързване с Docsvision

Свързването с Elasticsearch се конфигурира на страницата за услуги за пълен текстов
индексиране.
Запознаване с Elasticsearch стъпка по стъпка

Тук трябва да се посочи:
1. Адрес на сървъра Elasticsearch (посочва се при инсталацията).
2. Стринг за свързване с СУБД.
3. Адрес на Docsvision (в формат ConnectAddress=http://SERVER/DocsVision/StorageServer/StorageServerService.
asmx
)
4. На разделите "Карточки" и "Справочници" е нужно да настроите данните, които
трябва да се индексират.
Също така трябва да се уверите, че акаунтът, под който работи услугата Docsvision
Fulltext Indexing service, има достъп до БД Docsvision на MS SQL.
След свързването трябва да се уверите, че в БД MS SQL са създадени задачи с префикс:
«DV:FullText_<ИМЯБД>_CardWithFilesPrepareRange»
Запознаване с Elasticsearch стъпка по стъпка

След приключване на настройките в Windows клиента ще бъде отключена лентата за търсене.

4. REST API Elastic

Администраторът може да получи различна информация за работата на Elasticsearch чрез
осигуреното REST API.
В следващите примери ще използваме Insomnia Rest Client.

Получаване на обща информация

Както само услугата стартира и заработи (http://localhost:9200/ в браузера), можете
да изпълните заявка:
http://localhost:9200/_cat/health?v

Ще получим отговор за състоянието на услугата Elasticsearch (в браузера):
Запознаване с Elasticsearch стъпка по стъпка
Отговор за състоянието в Insomnia:
Запознаване с Elasticsearch стъпка по стъпка
Обърнете внимание на Status — Green, Yellow, Red. Официалната документация казва следното за статусите:
• Green — Всичко е наред (Клъстерът е напълно работоспособен)
• Yellow — Всички данни са налични, но част от репликите в клъстера все още не са назначени за тях
• Red — Част от данните не са налични по каквато и да е причина (самият клъстер функционира нормално)
Получаване на състояния на нодовете в клъстера и тяхното състояние (имам 1 нод):
http://localhost:9200/_cat/nodes?v
Запознаване с Elasticsearch стъпка по стъпка

Всички индекси (indices) ES:
http://localhost:9200/_cat/indices?v
Запознаване с Elasticsearch стъпка по стъпка

Освен индексите от Docsvision, могат да има и индекси от други приложения — heartbeat,
kibana — ако ги използвате. Нужните от ненужните могат да се сортират. Например,
вземете само индексите, в името на които има rd% в названието:
http://localhost:9200/_cat/indices/*card*?v&s=index
Запознаване с Elasticsearch стъпка по стъпка

Конфигурация на Elasticsearch

Получаване на настройки на Elasticsearch:
http://localhost:9200/_nodes
Резултатът ще бъде доста обширен, включително пътища към логовете:
Запознаване с Elasticsearch стъпка по стъпка

Как да разберем списъка с индекси, вече знаем, Docsvision го прави автоматично, давайки името на индекса във формат:
<имябд+видИндексируемойКарточки>
Може също така да се създаде собствен независим индекс:
http://localhost:9200/customer?pretty
Само това няма да е GET, а PUT заявка:
Запознаване с Elasticsearch стъпка по стъпка

Резултат:
Запознаване с Elasticsearch стъпка по стъпка

следващата заявка ще покаже всички индекси, включително новите (customer):
http://localhost:9200/_cat/indices?v
Запознаване с Elasticsearch стъпка по стъпка

5. Получаване на информация за индексираните данни

Състояние на индексите Elasticsearch

След като първоначалните настройки от страна на Docsvision са направени, услугата трябва да е готова за работа и започване на индексирането на данни.
На първо място, нека проверим дали индексите се запълват и техният размер е над стандартните 'байтове' със вече познатата ни заявка:
http://localhost:9200/_cat/indices?v
в резултат виждаме: индексирани са 87 'задачи' и 72 'документа', ако говорим в термини на нашата СЕЕД:
Запознаване с Elasticsearch стъпка по стъпка

След известно време, резултатите са такива (по подразбиране задачата за индексиране се стартира на всеки 5 минути):
Запознаване с Elasticsearch стъпка по стъпка

Виждаме, че броят документи се е увеличил.

Как да разберем, че необходимата карта е индексирана?

• На първо място, трябва да се уверим, че типовете карти в Docsvision съвпадат с посочените в настройките на Elasticsearch данни.
• На второ място, трябва да изчакаме индексирането на масива от карти — при попадане в Docsvision трябва да мине известно време, преди данните да се появят в хранилището.
• На трето място, може да се потърси картата по CardID. Това може да стане с заявка:

http://localhost:9200/_search?q=_id=2116C498-9D34-44C9-99B0-CE89465637C9

В случай че картата е в хранилището, ще видим нейните 'сурови' данни, ако не, ще видим приблизително такъв отговор:
Запознаване с Elasticsearch стъпка по стъпка

Търсене на карта в нода Elasticsearch

Намиране на документ по точно съвпадение на полето Description:
http://localhost:9200/_search?q=description: Исходящ tv1
Резултат:
Запознаване с Elasticsearch стъпка по стъпка

търсене на документ, в който в Description има вхождение 'Входящ'
http://localhost:9200/_search?q=description like Входящ
Резултат:
Запознаване с Elasticsearch стъпка по стъпка

Търсене на карта по съдържанието на приложен файл
http://localhost:9200/_search?q=content like 'AGILE'
резултат:
Запознаване с Elasticsearch стъпка по стъпка

Нека намерим всички карти от тип документ:
http://localhost:9200/_search?q=_type:CardDocument

или всички карти от вида задания:
http://localhost:9200/_search?q=_type:CardTask

Използвайки конструкции and и параметри, които Elasticsearch отдава под формата на JSON, може да се състави такава заявка:
http://localhost:9200/_search?q=_type:CardTask and Employee_RoomNumber: Орёл офиc and Employee_FirstName:Konstantin

Той ще покаже всички карти от тип задача, сред потребителите, чието FirstName е = Konstantin и се намират в Орёл Офис.
Освен LIKE има и други документирани параметри:
unlike, fields, docs, content и т.н.
Всички те са описани тук.

За днес е всичко!

#docsvision #docsvisionECM

Полезни връзки:

  1. Insomnia Rest клиент https://insomnia.rest/download/#windows
  2. https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html
  3. https://www.elastic.co/guide/en/elasticsearch/reference/1.4/_exploring_your_data.html
  4. https://stackoverflow.com/questions/50278255/elasticsearch-backup-on-windows-and-restore-on-linux
  5. https://z0z0.me/how-to-create-snapshot-and-restore-snapshot-with-elasticsearch/
  6. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters
  7. http://qaru.site/questions/15663281/elasticsearch-backup-on-windows-and-restore-on-linux

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster