Вопрос

Elastic не ищет в деталях?

Добрый день!

Нам необходимо использовать elasticsearch, чтобы обеспечить глобальный поиск. Но при реализации мы столкнулись с двумя проблемами, при передаче данных для индексации в elastic строка ограничивается 500 символами, т.е. если в базе длина строки больше, то elastic может забрать и проиндексировать только первые 500 символов. Мы предположили, что можно было бы разбивать длинное значение по 500 символов и сохранять в детали объекта, но по деталям информация не ищется вовсе. 

Есть ли кто-нибудь, кто сталкивался с подобными ограничениями и как удалось решить проблему? 

Заранее благодарю за любой совет!

 

Нравится

2 комментария

Добрый день!

 

В базовой логике приложения по умолчанию индексируются только разделы (независимо от их создателя) и только текстовые и справочные колонки кроме ряда исключений которые указаны в системной настройке "GlobalSearchIndexedDataConfig".



На текущий момент нет возможности добавить в индексацию сущности, которые не являются разделами, так как в логике выборки сущностей для индексации строгая завязка на принадлежность к разделу. 

Именно по этому записи в деталях не индексируются глобальным поиском.

 

Что касается ограничения в 500 символов. 

Тут все верно поиск в системе можно провести только по первым 500 символам текстового поля неограниченной длины. Это сделано в целях предотвратить случаи, большой нагрузке на elastic при поиске и индексации записей.



Но вы можете изменить это увеличив максимальную длину для индексации записей.

Для этого необходимо в деплойментах worker-single и worker в самом кубере добавить настройку (по аналогии с RequestTimeOut):

            - name: IndexingContentLength

              value: '999999'

 

Это можно сделать так же в и хелм пакете для этих же деплойментов. В папке templates найти папки worker-single и worker и в файлах deployment.yaml добавить строки (по аналогии с RequestTimeOut):

            - name: IndexingContentLength

              value: "{{ .Values.global.indexingContentLength | int64  }}"

Если будете менять через helm, то нужно еще в файле values-onsite.yaml в секцию global добавить свойство (или заменить значение в values.yaml): 

  indexingContentLength: 999999

и после внесения правок в helm обновить сервис.

 

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

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

Например, колонки, которые содержат служебную информацию.

Сделать это можно с помощью редактирования значений в системной настройки "GlobalSearchIndexedDataConfig".

 

Более детально об этом Вы можете ознакомиться на Академии по ссылке:

https://academy.terrasoft.ua/docs/8-0/user/razvertyvanie_onsite/nastroj…

 

С уважением,

Катя

Kate Karpik пишет:

На текущий момент нет возможности добавить в индексацию сущности, которые не являются разделами, так как в логике выборки сущностей для индексации строгая завязка на принадлежность к разделу.  Именно по этому записи в деталях не индексируются глобальным поиском.

А есть планы сделать это и для деталей? Или важные для поиска детали необходимо в таком случае создавать как разделы? 

Показать все комментарии