Здравствуйте!
Сегодня мы поговорим о движке полнотекстового поиска Elasticsearch (далее ES), с которым
работает платформа Docsvision 5.5.
![](https://habrastorage.org/r/w780q1/webt/3s/pt/ku/3sptkuesnfftzccp1botgg1egd8.jpeg)
Скачать актуальную версию можно по ссылке: www.elastic.co/downloads/elasticsearch
Скриншот установщика ниже:
![](https://habrastorage.org/r/w1560/webt/tn/vy/m7/tnvym7bpo2leveitleqbqzpvot8.png)
После завершения установки перейдите по адресу
http://localhost:9200/
Должна отобразиться страница с состоянием ES, пример ниже:
![](https://habrastorage.org/r/w1560/webt/nx/fb/5r/nxfb5rhkllvrv4vnfj3bz__afo4.png)
Если страница не открылась, убедитесь, что сервис Elasticsearch запущен. В Windows это
служба Elasticsearch.
![](https://habrastorage.org/r/w1560/webt/jo/5_/tw/jo5_twbj5nghmbrj3lkspb_x-la.png)
Подключение к Elasticsearch настраивается на странице сервиса полнотекстового
индексирования.
![](https://habrastorage.org/r/w1560/webt/w9/br/ho/w9brhowg6m1bqwvsgef9hgv4uvo.png)
Здесь нужно указать:
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»
![](https://habrastorage.org/r/w1560/webt/lm/pu/x8/lmpux81u-9sjbfzzye-ofolgppc.png)
После завершения настроек в Windows-клиенте будет разблокирована строка поиска.
Администратор может получить различную информацию о работе Elasticsearch с помощью
предоставляемого REST API.
В следующих примерах мы будем использовать Insomnia Rest Client.
Как только служба запустилась и заработала (http://localhost:9200/ в браузере), можно
выполнить запрос:
http://localhost:9200/_cat/health?v
Получим ответ о состоянии службы Elasticsearch (в браузере):
![](https://habrastorage.org/r/w1560/webt/ax/re/ym/axreymv4qm1z0r5qxulylhj_dda.png)
Ответ о состоянии в Insomnia:
![](https://habrastorage.org/r/w1560/webt/zk/jn/ic/zkjnicizzo4bzshdrmmlfwvt1ug.png)
Обратим внимание на Status — Green, Yellow, Red. Официальная документация говорит о статусах следующее:
• Green — Все хорошо (Кластер полностью работоспособен)
• Yellow — Все данные доступны, но некоторые реплики в кластере пока что не выделены для их
• Red — Часть данных недоступна по любой причине (сам кластер функционирует нормально)
Получение состояний о нодах в кластере и их состояние (у меня 1 нода):
http://localhost:9200/_cat/nodes?v
![](https://habrastorage.org/r/w1560/webt/mx/ms/5e/mxms5egdv44r2srxs9kgwupkwzi.png)
Все индексы (indices) ES:
http://localhost:9200/_cat/indices?v
![](https://habrastorage.org/r/w1560/webt/as/jn/_j/asjn_jqyo05ghhgqvxnmvy1l6co.png)
Кроме индексов от Docsvision, могут быть и индексы других приложений — heartbeat,
kibana — если вы их используете. Нужные от ненужных можно отсортировать. Например,
возьмём только индексы, в имени которых есть %card% в названии:
http://localhost:9200/_cat/indices/*card*?v&s=index
![](https://habrastorage.org/r/w1560/webt/as/jn/_j/asjn_jqyo05ghhgqvxnmvy1l6co.png)
Получение настроек Elasticsearch:
http://localhost:9200/_nodes
Результат будет довольно обширный, в том числе пути к логам:
![](https://habrastorage.org/r/w1560/webt/-9/9u/nm/-99unm675gws0r6fvptohnicadu.png)
Как узнать список индексов, мы уже знаем, Docsvision делает это автоматически, давая имя индексу в формате:
<имябд+видИндексируемойКарточки>
Также можно создать собственный независимый индекс:
http://localhost:9200/customer?pretty
Только это будет не GET, а PUT запрос:
![](https://habrastorage.org/r/w1560/webt/b2/s3/tn/b2s3tntgpxdy6fcuytj32xqi06u.png)
Результат:
![](https://habrastorage.org/r/w1560/webt/py/rx/ij/pyrxijetece869rqiaoxdecg7e8.png)
следующий запрос покажет все индексы, в том числе и новые (customer):
http://localhost:9200/_cat/indices?v
![](https://habrastorage.org/r/w1560/webt/mq/do/j1/mqdoj1grubcbgefio4wqlftp3ny.png)
После того как первоначальная настройки со стороны Docsvision проведена, служба должна быть готова к работе и началу индексирования данных.
Прежде всего проверим, что индексы заполняются и их размер больше стандартных «байтов» уже знакомым нам запросом:
http://localhost:9200/_cat/indices?v
в результате видим: проиндексировано 87 «заданий» и 72 «документа» если говорить в терминах нашей СЭД:
![](https://habrastorage.org/r/w1560/webt/cj/38/kj/cj38kjsqydxjlylhgazdxwvriv8.png)
Спустя некоторое время, результаты такие (по умолчанию job индексирования запускается через каждые 5 минут):
![](https://habrastorage.org/r/w1560/webt/se/bh/be/sebhbe4li98ellezgieutpaozyg.png)
Видим что количество документов увеличилось.
• Во-первых, нужно убедиться, что тип карточки в Docsvision совпадает с указанными в настройках Elascticsearch данными.
• Во-вторых, дождаться индексации массива карточек — при попадании в Docsvision должно пройти некоторое время до появления данных в хранилище.
• В-третьих, можно поискать карточку по CardID. Сделать это можно запросом:
http://localhost:9200/_search?q=_id=2116C498-9D34-44C9-99B0-CE89465637C9
В случае если карточка есть в хранилище, мы увидим её «сырые» данные, в случае если нет, увидим примерно такой ответ:
![](https://habrastorage.org/r/w1560/webt/ly/qk/hx/lyqkhxedoizmkyx3bbcitiya-gu.png)
Найти документ по точному совпадению поля Description:
http://localhost:9200/_search?q=description: Исходящий tv1
Результат:
![](https://habrastorage.org/r/w1560/webt/zz/o2/qd/zzo2qdqnry2v-z5hrbmk-tslbes.png)
поиск документа, у которого в Description есть вхождение 'Входящий'
http://localhost:9200/_search?q=description like Входящий
Результат:
![](https://habrastorage.org/r/w1560/webt/ag/y1/9f/agy19fdac38_av9ot398pke-tou.png)
Поиск карточки по содержимому приложенного файла
![](https://habrastorage.org/r/w1560/webt/p_/h1/rv/p_h1rvhr1h9vics2bu0td68xfpq.png)
Найдём все карточки типа документ:
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
Полезные ссылки:
Сегодня мы поговорим о движке полнотекстового поиска Elasticsearch (далее ES), с которым
работает платформа Docsvision 5.5.
![](https://habrastorage.org/webt/3s/pt/ku/3sptkuesnfftzccp1botgg1egd8.jpeg)
1. Установка
Скачать актуальную версию можно по ссылке: www.elastic.co/downloads/elasticsearch
Скриншот установщика ниже:
![](https://habrastorage.org/webt/tn/vy/m7/tnvym7bpo2leveitleqbqzpvot8.png)
2. Проверка работоспособности
После завершения установки перейдите по адресу
http://localhost:9200/
Должна отобразиться страница с состоянием ES, пример ниже:
![](https://habrastorage.org/webt/nx/fb/5r/nxfb5rhkllvrv4vnfj3bz__afo4.png)
Если страница не открылась, убедитесь, что сервис Elasticsearch запущен. В Windows это
служба Elasticsearch.
![](https://habrastorage.org/webt/jo/5_/tw/jo5_twbj5nghmbrj3lkspb_x-la.png)
3. Подключение к Docsvision
Подключение к Elasticsearch настраивается на странице сервиса полнотекстового
индексирования.
![](https://habrastorage.org/webt/w9/br/ho/w9brhowg6m1bqwvsgef9hgv4uvo.png)
Здесь нужно указать:
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»
![](https://habrastorage.org/webt/lm/pu/x8/lmpux81u-9sjbfzzye-ofolgppc.png)
После завершения настроек в Windows-клиенте будет разблокирована строка поиска.
4. REST API Elastic
Администратор может получить различную информацию о работе Elasticsearch с помощью
предоставляемого REST API.
В следующих примерах мы будем использовать Insomnia Rest Client.
Получение общей информации
Как только служба запустилась и заработала (http://localhost:9200/ в браузере), можно
выполнить запрос:
http://localhost:9200/_cat/health?v
Получим ответ о состоянии службы Elasticsearch (в браузере):
![](https://habrastorage.org/webt/ax/re/ym/axreymv4qm1z0r5qxulylhj_dda.png)
Ответ о состоянии в Insomnia:
![](https://habrastorage.org/webt/zk/jn/ic/zkjnicizzo4bzshdrmmlfwvt1ug.png)
Обратим внимание на Status — Green, Yellow, Red. Официальная документация говорит о статусах следующее:
• Green — Все хорошо (Кластер полностью работоспособен)
• Yellow — Все данные доступны, но некоторые реплики в кластере пока что не выделены для их
• Red — Часть данных недоступна по любой причине (сам кластер функционирует нормально)
Получение состояний о нодах в кластере и их состояние (у меня 1 нода):
http://localhost:9200/_cat/nodes?v
![](https://habrastorage.org/webt/mx/ms/5e/mxms5egdv44r2srxs9kgwupkwzi.png)
Все индексы (indices) ES:
http://localhost:9200/_cat/indices?v
![](https://habrastorage.org/webt/as/jn/_j/asjn_jqyo05ghhgqvxnmvy1l6co.png)
Кроме индексов от Docsvision, могут быть и индексы других приложений — heartbeat,
kibana — если вы их используете. Нужные от ненужных можно отсортировать. Например,
возьмём только индексы, в имени которых есть %card% в названии:
http://localhost:9200/_cat/indices/*card*?v&s=index
![](https://habrastorage.org/webt/as/jn/_j/asjn_jqyo05ghhgqvxnmvy1l6co.png)
Конфигурация Elasticsearch
Получение настроек Elasticsearch:
http://localhost:9200/_nodes
Результат будет довольно обширный, в том числе пути к логам:
![](https://habrastorage.org/webt/-9/9u/nm/-99unm675gws0r6fvptohnicadu.png)
Как узнать список индексов, мы уже знаем, Docsvision делает это автоматически, давая имя индексу в формате:
<имябд+видИндексируемойКарточки>
Также можно создать собственный независимый индекс:
http://localhost:9200/customer?pretty
Только это будет не GET, а PUT запрос:
![](https://habrastorage.org/webt/b2/s3/tn/b2s3tntgpxdy6fcuytj32xqi06u.png)
Результат:
![](https://habrastorage.org/webt/py/rx/ij/pyrxijetece869rqiaoxdecg7e8.png)
следующий запрос покажет все индексы, в том числе и новые (customer):
http://localhost:9200/_cat/indices?v
![](https://habrastorage.org/webt/mq/do/j1/mqdoj1grubcbgefio4wqlftp3ny.png)
5. Получение информации об индексированных данных
Состояние индексов Elasticsearch
После того как первоначальная настройки со стороны Docsvision проведена, служба должна быть готова к работе и началу индексирования данных.
Прежде всего проверим, что индексы заполняются и их размер больше стандартных «байтов» уже знакомым нам запросом:
http://localhost:9200/_cat/indices?v
в результате видим: проиндексировано 87 «заданий» и 72 «документа» если говорить в терминах нашей СЭД:
![](https://habrastorage.org/webt/cj/38/kj/cj38kjsqydxjlylhgazdxwvriv8.png)
Спустя некоторое время, результаты такие (по умолчанию job индексирования запускается через каждые 5 минут):
![](https://habrastorage.org/webt/se/bh/be/sebhbe4li98ellezgieutpaozyg.png)
Видим что количество документов увеличилось.
Как понять, что нужная карточка проиндексирована?
• Во-первых, нужно убедиться, что тип карточки в Docsvision совпадает с указанными в настройках Elascticsearch данными.
• Во-вторых, дождаться индексации массива карточек — при попадании в Docsvision должно пройти некоторое время до появления данных в хранилище.
• В-третьих, можно поискать карточку по CardID. Сделать это можно запросом:
http://localhost:9200/_search?q=_id=2116C498-9D34-44C9-99B0-CE89465637C9
В случае если карточка есть в хранилище, мы увидим её «сырые» данные, в случае если нет, увидим примерно такой ответ:
![](https://habrastorage.org/webt/ly/qk/hx/lyqkhxedoizmkyx3bbcitiya-gu.png)
Поиск карточки в ноде Elasticsearch
Найти документ по точному совпадению поля Description:
http://localhost:9200/_search?q=description: Исходящий tv1
Результат:
![](https://habrastorage.org/webt/zz/o2/qd/zzo2qdqnry2v-z5hrbmk-tslbes.png)
поиск документа, у которого в Description есть вхождение 'Входящий'
http://localhost:9200/_search?q=description like Входящий
Результат:
![](https://habrastorage.org/webt/ag/y1/9f/agy19fdac38_av9ot398pke-tou.png)
Поиск карточки по содержимому приложенного файла
![](https://habrastorage.org/webt/p_/h1/rv/p_h1rvhr1h9vics2bu0td68xfpq.png)
Найдём все карточки типа документ:
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
Полезные ссылки:
- Insomnia Rest client https://insomnia.rest/download/#windows
- https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html
- https://www.elastic.co/guide/en/elasticsearch/reference/1.4/_exploring_your_data.html
- https://stackoverflow.com/questions/50278255/elasticsearch-backup-on-windows-and-restore-on-linux
- https://z0z0.me/how-to-create-snapshot-and-restore-snapshot-with-elasticsearch/
- https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters
- http://qaru.site/questions/15663281/elasticsearch-backup-on-windows-and-restore-on-linux