День добрый. Есть проблема при настройки Global Search. 

Пользуюсь вот этим мануалом. 

https://academy.creatio.com/docs/user/on_site_deployment/containerized_…

Проблема на шаге 3. Execute the HTTP request to connect the search to the site. Specify the following:

Прошу вас помочь понять причину.

 

{"code":500,"status":"error","message":"System.Exception: Could not check index 'vcrsafsvs8pacelkp50hewinxquqob8syopknhu7h8i9qwna8xdbj9pquooe6iip' exists.\n ---> System.Exception: Invalid NEST response built from a unsuccessful () low level call on HEAD: /vcrsafsvs8pacelkp50hewinxquqob8syopknhu7h8i9qwna8xdbj9pquooe6iip\n# Audit trail of this API call:\n - [1] BadRequest: Node: http://elasticsearch-public-ip:9200/ Took: 00:00:00.0073645\n# OriginalException: System.Net.Http.HttpRequestException: Resource temporarily unavailable\n ---> System.Net.Sockets.SocketException (11): Resource temporarily unavailable\n   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)\n   --- End of inner exception stack trace ---\n   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)\n   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)\n   at Elasticsearch.Net.HttpConnection.Request[TResponse](RequestData requestData)\n# Request:\n<Request stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>\n# Response:\n<Response stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>\n\n   --- End of inner exception stack trace ---\n   at GlobalSearch.WebApp.Services.SearchManagement.SearchService.CheckIndexExist(String indexName) in /app/Src/GlobalSearch.WebApp/Services/SearchManagement/SearchService.cs:line 96\n   at GlobalSearch.WebApp.ServiceModel.Requests.Handlers.SearchManagement.AddSearchRequestHandler.CanAddSearchToSite(Site site) in /app/Src/GlobalSearch.WebApp/ServiceModel/Requests.Handlers/SearchManagement/AddSearchRequestHandler.cs:line 65\n   at GlobalSearch.WebApp.ServiceModel.Requests.Handlers.SearchManagement.AddSearchRequestHandler.InternalHandle(AddSearchRequest request) in /app/Src/GlobalSearch.WebApp/ServiceModel/Requests.Handlers/SearchManagement/AddSearchRequestHandler.cs:line 126\n   at GlobalSearch.WebApp.ServiceModel.Requests.Handlers.BaseRequestHand* Connection #0 to host 192.168.0.110 left intact
 

Нравится

1 комментарий

Добрый день,

 

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

 

С уважением,

Глеб.

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

Добрый день,

 

При использовании глобального поиска у нас на портале не работают фильтры.

 

Т.е. поиск в глобальном поиске без фильтров и с испольозванием фильтров дают один и тот же результат. Фильтр не сужает результаты поиска.

 

Это так и должно быть?

Нравится

2 комментария
Лучший ответ

Здравствуйте,

 

Можете пожалуйста описать данный вопрос с помощью скриншотов, чтобы более ясно понимать вопрос? В общем, Глобальный Поиск (поиск из командной строки в правом врхнем углу экрана) никаким образом не связан с установленными фильтрами в секции и его результаты никак от этого не меняются.

 

С уважением,

Мирослава

Здравствуйте,

 

Можете пожалуйста описать данный вопрос с помощью скриншотов, чтобы более ясно понимать вопрос? В общем, Глобальный Поиск (поиск из командной строки в правом врхнем углу экрана) никаким образом не связан с установленными фильтрами в секции и его результаты никак от этого не меняются.

 

С уважением,

Мирослава

Мирослава, спасибо большое. На всякий случай, добавил скриншот. Настроил фильтр клиентов Банковского сектора, а в поиск ввел слово Hotel. По идее, в банковском секторе поиск результата не должен дать - там отелю делать нечего. Но поиск выдает большое кол-во результатов со всей базы, не реагируя на наличие фильтра. 

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

Настроен глобальный поиск 3.0.5. Создание сайта и поиска . Не работает. Ошибок на эластике и компонентах нет. 

 

Но в логах пишет:

2022-10-12 17:54:50,644 [94] ERROR IIS APPPOOL\creatio_01 OnError - Indexing request failed.
System.ArgumentException: SendIndexingRequest failed. IndexingApiUrl is incorect!
   at Terrasoft.GlobalSearch.Indexing.IndexingWebRequestFactory.CheckRequestData(IndexingRequestData message)
   at Terrasoft.GlobalSearch.Indexing.IndexingWebRequestFactory.CreateIndexingRequest(IndexingRequestData indexingRequestData)
   at Terrasoft.GlobalSearch.Indexing.IndexingActor.SendIndexingRequest(IndexingRequestData message)
   at Terrasoft.GlobalSearch.Indexing.IndexingActor.<.ctor>b__3_0(IndexingRequestData message)

 

С app-сервера телнетом на 81,82,83 и на эластик заходит.  

Нравится

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

Здравствуйте,

 

Прошу обратить внимание, что для подобных проблем лучше создавать обращение напрямую на команду поддержки, так как в рамках Community решить её не выйдет.

 

С уважением,

Мирослава

Mira Dmitruk,

Из странного, в  инструкции:

 

et the values of the system settings:

 

“GlobalSearchUrl:” the full path to ElasticSearch, including the index. The web-api returns this value if you request it to add site search.

 

Example string for Docker: http://[SERVER2_IP_ADDRESS]:83/indexname.

 

Example string for Kubernetes: http://[GS-SEARCH-SERVICE_URL]/indexname.

 

Если вызвать в браузере, то:

 

http://[SERVER2_IP_ADDRESS]:83/indexname - говорит - 404

http://[SERVER1_IP_ADDRESS]:9200 /indexname - возвращает ответ. 

 

У нас на Docker развернуто.

Если указать в GlobalSearchUrl - for Kubernetes: http://[SERVER1_IP_ADDRESS]:9200 /indexname. то ошибка пропадает. Но поиск не работает

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

Добрый день, подскажите почему падает докер контейнер с глобальным поиском? Делал по инструкции, версия 3.0 https://academy.terrasoft.ua/docs/user/razvertyvanie_onsite/nastrojka_k…
Ошибка на шаге 3 "Перейдите в папку с компонентами /opt/compose/elasticsearch и выполните команду": docker-compose up -d

Прикрепленные файлы

Нравится

2 комментария
Лучший ответ

Добрый день!

Согласно скриншоту, ваш контейнер в состоянии “Exited (1)”

1) посмотрите логи контейнера;

 

2) Exit Code 1: указывает на сбой из-за ошибки приложения.

Обычно, указывает, что контейнер остановился либо из-за ошибки приложения, либо из-за неправильной ссылки в Dockerfile на файл, которого нет в контейнере.

Про этот код ошибки, можно прочитать в открытых источниках: https://betterprogramming.pub/understanding-docker-container-exit-codes…

 

3) docker-compose --verbose up - эта команда покажет вам логи установки контейнеров и вы сможете увидеть все этапы установки. 

Добрый день!

Согласно скриншоту, ваш контейнер в состоянии “Exited (1)”

1) посмотрите логи контейнера;

 

2) Exit Code 1: указывает на сбой из-за ошибки приложения.

Обычно, указывает, что контейнер остановился либо из-за ошибки приложения, либо из-за неправильной ссылки в Dockerfile на файл, которого нет в контейнере.

Про этот код ошибки, можно прочитать в открытых источниках: https://betterprogramming.pub/understanding-docker-container-exit-codes…

 

3) docker-compose --verbose up - эта команда покажет вам логи установки контейнеров и вы сможете увидеть все этапы установки. 

Жмурко Сергей,

спасибо в моем случае выдал Exit Code 1, а в логах удалось найти что на сервере не хватает 2Гб оперативной памяти

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

Добрый день. 
Глобальный поиск и дедубликация ранее корректно работал на версии 2.0, после перевода его на 3.0, стал странно работать.
В системе есть раздел Purchase в нем порядка 25 млн записей. 
Глобальный поиск его судя по всему не проиндексировал, поиск по нему не происходит, хотя я принудительно пытаюсь его проиндексировать через 
/indexation/SiteName/Purchase/reindex/full мне в ответе приходит ОК, но ничего не происходит. 
 После запуска дедубликации по этому разделу она в базе mongo сразу стает завершенной без ошибок, а в интерфейсе остается на 0%. 
 По базовому разделу контакты дедубликация проходит тоже частично успешно, находит не все дубли. В mongo пишет, что обработано меньше записей, чем должно.

В mongo залазил согласно https://community.terrasoft.ua/articles/kak-proverit-nalichie-zapuschen…

 Ошибок по логам контейнеров не нашел. Подскажите может, кто-то сталкивался с такой проблемой, возможно есть дополнительные настройки?  Спасибо.

Нравится

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

Добрый день, Владимир!

 

Возможно, очередь не долшла к записям из этого раздела.

Полная переидексация для БД только в разделе Purchase может проходить достаточно долго.

Можно посмотреть значения колонки LastIndexeOn для раздела Purchase в таблице IndexingEntity в базе глобального поиска Postgres. Когда индексация дойдет к этому разделу значения из этой колонки начнет расти и можно будет поискать записи после завершения индексации раздела.

 

Как узнать завершилась ли индексация глобального поиска в on-site?

 

В БД глобального поиска, есть таблица IndexingEntity, которая отвечает за настройки индексации для каждой отдельной сущности, например Контакт, Средства связи контакта и т.д.

В ней есть 2 колонки, которые важны для понимания завершилась ли первичная индексация или нет:

  • LastIndexedOn - дата последней итерации индексации.

  • InProcess - в процессе ли индексация (одной итерации) по текущей сущности.

Индексация завершилась для конкретной сущности, лишь тогда, когда LastIndexedOn = дата подключения сайта к ГП и в InProcess установлено значение “false“.

Полностью индексация завершена, когда для всех записей из таблицы "IndexingEntity" значения в LastIndexedOn и InProcess установлены аналогично описанию выше.

Порядок настройки

  1. Зайти в контейнер с БД глобального поиска.

     

    docker exec -it gs-postgres bash

  2. Подключиться к БД глобального поиска.

     

    psql -d postgres -U postgres

  3. Выбрать, все записи из таблицы IndexingEntity.

     

    SELECT "EntityName", "LastIndexedOn", "InProcess" FROM "IndexingEntity";

 

P.S. Планировщик (который ответственный за первичную индексацию) запускается раз в 50 дней, таким образом доиндексирует\актуализирует необходимое.

То есть, это к тому, что каждые 50 дней эта дата будет обновляться.

Жмурко Сергей,

Спасибо за совет. Таблица показала, что LastIndexedOn везде пусто и InProcess везде false. То-есть индексация совсем не начиналась, хотя по контактам даже дубли находит. В логах контейнера с прогрессом были ошибки по вставке дублей в эту таблицу. Таблицу очистил попробую перезапустить все.

Показать все комментарии
При запросе http://[ GS-WEB-API ]:81/sites/[ SITE_NAME ]/search/state Получаю ошибку:
"Failed to check state for the 'NAME_BASE' site: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 25 - Connection string is not valid)"],"info":[]},"code":200,"status":"ok","message":null}
Перепроверил строку конфига эластика, настройки сетевого и локального Firewall. Куда копать, подскажите?

Нравится

7 комментариев

Игорь, добрый день! 

Вам необходимо указать точные значения для GS-WEB-API и SITE_NAME, например:

http://192.168.1.1:81/sites/my-test-site

Мы рекомендуем указывать ip-адрес вместо доменного имени. Также необходимо убедиться, что Ваша база данных доступна с устройства, на котором проводится тестирование и порт 81 не блокируется.
Проверьте статус работы БД. Можете перезапустить базу данных в случае, если произошёл отказ в работе с её стороны.

Lev Kuptsov пишет:
http://192.168.1.1:81/sites/my-test-site

Указаны  в запросе были реальные данные, осознано заменил в целях безопасности при размещении заявки.  База данных пингуется с сервера GS-WEB-API. Замечено, что на сетевом Firewall нет запросов от GS-WEB-API в сторону БД при запросе ..../state. Хотя все запущенные контейнеры находятся со статусом Up.

Есть ли отличия в настройках Docker 2.0.2 и 2.0.4? Была сделана переустановка. До этого на 2.0.2 поиск работал.

Такая же проблема, саппорт пока помочь не может. Поиск сдох на версии 2.0.2.  Установил 2.0.4, но проблема осталась.  

Игорь Г., 

Вместо fqdn имени сервера необходимо использовать ip адрес.

Причем если тестировать коннект до БД утилитой sqlcmd (https://hub.docker.com/_/microsoft-mssql-tools) - то коннект успешно проходит.

Бакалов Павел Вячеславович,

Все верно, только IP и прописывал.

Бакалов Павел Вячеславович,

Я проблему решил. Насколько я понял от своих программистов, проблема в том, что в 

docker 2.0.2 в конфиге параметр image: postgres, по нему скачивается latest, там сейчас 14 версия, а должна быть 11. 
postgres работает, а контейнер gs-web-api не может подключиться к бд и падает.

 

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

Добрый день!

Дошел до индексирования поиска, все настроил по инструкции, поиск работает (прокрутка поиска идет), а вот результат не выводит

В инструкции есть "Как запустить переиндексацию сайта?"

Но я не знаю, куда и как вводить это PUT запрос, в какую консоль, на какой машине..., помогите знатоки

Нравится

6 комментариев

Максим, добрый день!

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

require(["ServiceHelper"], (ServiceHelper) => {
    ServiceHelper.callService("IndexingConfigService", "SendIndexationConfigs");
});

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

Спасибо! По пробую! А все таки как PUT запрос запустить?

Я что-то не так сделал?

Максим,

 

Вы перепутали консоль браузера с консолью SQL.

Скрипт нужно выполнить в консоли браузера.

Открыть консоль браузера можно, нажав на клавишу F12.

Максим,

Запрос PUT выполнять в графичном интерфейсе сервиса поиска.
Необходимо в браузере перейти на http://адрес-сервера/api/index.html, где [адрес-сервера] - это адрес сервера, где запущены сервисы Глобального поиска.

Понял, запустил, все работает! Спасибо!

Показать все комментарии
Здравствуйте, настраиваю глобальный поиск, хочу удалить индексы:
http://айпи:81/sites/sales/search
Пробовал вот так:
curl -XDELETE http://айпи:81/sites/sales/search-*/
Но потом при curl -v -X POST -d '{"templateName": "default.json"}' -H "Content-Type: application/json" http://айпи:81/sites/sales/search
Как правильно удалить ранее созданные индексы?
Выдает ошибку:
{"code":500,"status":"error","message":"System.Exception: Could not check index 'uoospgg4cm6abfpjuotlbfcrco0pq5esrxuexjqw6vndxtx4gvnpjtljeneotytt' exists. ---> System.Exception: Invalid NEST response built from a unsuccessful low level call on HEAD: /uoospgg4cm6abfpjuotlbfcrco0pq5esrxuexjqw6vndxtx4gvnpjtljeneotytt\n# Audit trail of this API call:\n - [1] BadRequest: Node: http://elasticsearch-public-ip:9200/ Took: 00:00:10.0127688\n# OriginalException: System.Net.Http.HttpRequestException: Resource temporarily unavailable ---> System.Net.Sockets.SocketException: Resource temporarily unavailable\n   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)\n   --- End of inner exception stack trace ---\n   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)\n   at System.Threading.Tasks.ValueTask`1.get_Result()\n   at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n   at System.Threading.Tasks.ValueTask`1.get_Result()\n   at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)\n   at System.Threading.Tasks.ValueTask`1.get_Result()\n   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)\n   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)\n   at Elasticsearch.Net.HttpConnection.Request[TReturn](RequestData requestData) in C:\\Users\\russc\\source\\git\\elasticsearch-net-5.x\\src\\Elasticsearch.Net\\Connection\\HttpConnection-CoreFx.cs:line 78\n# Request:\r\n<Request stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>\n# Response:\r\n<Response stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>\n\n   --- End of inner exception stack trace ---\n   at GlobalSearch.WebApp.Services.SearchManagement.SearchService.CheckIndexExist(String indexName) in /src/Src/GlobalSearch.WebApp/Services/SearchManagement/SearchService.cs:line 95\n   at GlobalSearch.WebApp.ServiceModel.Requests.Handlers.SearchManagement.DeleteSearchRequestHandler.DeleteSearchBySite(Site site) in /src/Src/GlobalSearch.WebApp/ServiceModel/Requests.Handlers/SearchManagement/DeleteSearchRequestHandler.cs:line 44\n   at GlobalSearch.WebApp.ServiceModel.Requests.Handlers.SearchManagement.DeleteSearchRequestHandler.InternalHandle(DeleteSearchRequest request) in /src/Src/GlobalSearch.WebApp/ServiceModel/Requests.Handlers/SearchManagement/DeleteSearchRequestHandler.cs:line 70\n   at GlobalSearch.WebApp.ServiceModel.Requests.Handlers.BaseRequestHandler`1.Handle(TRequest request) in /src/Src/GlobalSearch.WebApp/ServiceModel/Requests.Handlers/BaseRequestHandler.cs:line 38"}

Нравится

1 комментарий

Евгений, добрый день! 

Вам следует обратить внимание на причину, по которой в запросе не удаётся определить существование индекса, а именно на запись:
 

Invalid NEST response built from a unsuccessful low level call on HEAD

Попробуйте поискать информацию по данному фрагменту.

Показать все комментарии
Добрый день, выполнял настройку elasticsearch по инструкции, linux+docker. Версия Creatio 7.17.1.1364 (.NET Core 3.1.15). Компоненты на машинах запустились без ошибок, дошел до момента когда нужно выполнить sql  скрипт. Для этого в Creatio добавил плагин SQL консоли, он там 1. Вот первый скрипт который запускаю:
БД Postgres
DO $$

DECLARE 
    GlobalSearchFeature VARCHAR(50) := 'GlobalSearch';
    GlobalSearchFeatureId uuid;
    GlobalSearchV2Feature VARCHAR(50) := 'GlobalSearch_V2';
    GlobalSearchV2FeatureId uuid;
    GS_RelatedEntityIndexingFeature VARCHAR(50) :=   'GlobalSearchRelatedEntityIndexing';
    GS_RelatedEntityIndexingFeatureId uuid;
    allEmployeesId uuid := 'A29A3BA5-4B0D-DE11-9A51-005056C00008';

BEGIN

   SELECT "Id" INTO GlobalSearchFeatureId FROM "Feature"
   WHERE "Code" = GlobalSearchFeature
   LIMIT 1;
   IF (GlobalSearchFeatureId IS NOT NULL)
      THEN
          IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = GlobalSearchFeatureId) THEN
             UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = GlobalSearchFeatureId;
          ELSE
              INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchFeatureId);
          END IF;
   ELSE
       GlobalSearchFeatureId := uuid_generate_v4();
       INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GlobalSearchFeatureId, GlobalSearchFeature, GlobalSearchFeature);
       INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchFeatureId);
   END IF;

   SELECT "Id" INTO GlobalSearchV2FeatureId FROM "Feature"
   WHERE "Code" = GlobalSearchV2Feature
   LIMIT 1;
   IF (GlobalSearchV2FeatureId IS NOT NULL)
    THEN
        IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = GlobalSearchV2FeatureId) THEN
            UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = GlobalSearchV2FeatureId;
        ELSE
           INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchV2FeatureId);
        END IF;
   ELSE
       GlobalSearchV2FeatureId := uuid_generate_v4();
       INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GlobalSearchV2FeatureId, GlobalSearchV2Feature, GlobalSearchV2Feature);
       INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState", "FeatureId") VALUES (allEmployeesId, '1', GlobalSearchV2FeatureId);
   END IF;

  SELECT "Id" INTO GS_RelatedEntityIndexingFeatureId FROM "Feature" WHERE "Code" =GS_RelatedEntityIndexingFeature LIMIT 1;
  IF (GS_RelatedEntityIndexingFeatureId IS NOT NULL)
  THEN
  IF EXISTS (SELECT * FROM "AdminUnitFeatureState" WHERE "FeatureId" = Bulk_ES_DD_FeatureId) THEN
UPDATE "AdminUnitFeatureState" SET "FeatureState" = 1 WHERE "FeatureId" = GS_RelatedEntityIndexingFeatureId;
  ELSE
  INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState","FeatureId") VALUES (allEmployeesId, '1', GS_RelatedEntityIndexingFeatureId);
  END IF;
  ELSE
  GS_RelatedEntityIndexingFeatureId := uuid_generate_v4();
  INSERT INTO "Feature" ("Id", "Name", "Code") VALUES (GS_RelatedEntityIndexingFeatureId, GS_RelatedEntityIndexingFeature, GS_RelatedEntityIndexingFeature);
  INSERT INTO "AdminUnitFeatureState" ("SysAdminUnitId", "FeatureState","FeatureId") VALUES (allEmployeesId, '1', GS_RelatedEntityIndexingFeatureId);
  END IF;
END $$;

Этот скрипт падает с ошибкой(но таймер у скрипта все таки стартует)
Вот второй скрипт:
Данные нужные подставил
 
UPDATE "SysSettingsValue"
SET "TextValue" = [укажите URL к индексу ElasticSearch, строка следующего типа: http://external.elasticsearch:9200/indexname]
WHERE "SysSettingsId" = (SELECT "Id" FROM "SysSettings" WHERE "Code" = 'GlobalSearchUrl' LIMIT 1 );

UPDATE "SysSettingsValue"
SET "TextValue" = [укажите URL к Global Search Service, строка следующего типа: http://SERVER2_IP_ADDRESS:81]
WHERE "SysSettingsId" = (SELECT "Id" FROM "SysSettings" WHERE "Code" = 'GlobalSearchConfigServiceUrl' LIMIT 1 );

UPDATE "SysSettingsValue"
SET "TextValue" = [укажите URL к Global Search Indexing Service, строка, сл. типа - http://SERVER2_IP_ADDRESS:82]
WHERE "SysSettingsId" = (SELECT "Id" FROM "SysSettings" WHERE "Code" = 'GlobalSearchIndexingApiUrl' LIMIT 1 );

Окей, раз скрипты не работают я пошел на:
 

/Nui/ViewModule.aspx#BaseSchemaModuleV2/FeaturesPage
Без /0/ потому что Linux.
Там нашел один единственный тумблер с надписью GlobalSearch, вот его и включил и сохранил, все ок.
Вопрос в следующем, как мне убедится что Глобальный поиск работает? И нужны ли все таки выполненные эти скрипты?
Если скрипты нужно выполнять, то где? в Postgres(на Linux)? или как это работает?

Нравится

9 комментариев

Здравствуйте, скрипты необходимо запускать для корректного включения функциональности. Подскажите, какие ошибки возникают при выполнении скриптов?
Скрипты необходимо выполнять на базе данных приложения Creatio.

После выполнения скриптов нужно перезапустить сайт с очисткой Redis.
Далее создать тестовую запись и через минуту попробовать поискать её в глобальном поиске. 

Алёна Доля, здравствуйте, встретился с ошибкой с ссылкой на отсутствие переменных в psql, GlobalSearchUrl, GlobalSearchConfigServiceURL, GlobalSearchIndexingApiUrl
если есть пример того как должно выглядеть буду благодарен

Алёна Доля,

ещё вопрос не по теме  БД, на сервере с компонентами elasticsearch заметил что не дописал порт в команду curl, вопрос, как теперь удалить старую запись? Потому что сейчас не дает записать ничего из-за того что ранее уже записывал

Евгений Шевченко,
Для более быстрой настройки можете заполнить настройки GobalSearchUrl, GlobalSearchConfigServiceURL, GlobalSearchIndexingApiUrl  через интерфейс в разделе  "Системные настройки". Необходимые записи фильтруйте в разделе по коду.

ОШИБКА:  "globalsearchfeatureid" - не известная переменная
СТРОКА 14:    SELECT "Id" INTO GlobalSearchFeatureId FROM "Feature"

не подскажете в чем причина?

Добрый день!

Проблема заключалась в функционале страницы https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/razvertyvanie_onsite/nastrojka_kontejnernyh_komponentov/nastroit_globalnyy_poisk
В ближайшее время мы исправим этот функционал в статье.

Воспроизводится проблема в результате использования кнопки Копировать код (скриншот во вложении).
Если копировать сам текст запроса, ошибка перестанет воспроизводиться.

Жмурко Сергей,

Всё ещё не поправлено :)

Андрей,

Добрый день! Проблема зарегистрирована для исправления в будущих версиях Creatio.

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

Добрый день, коллеги!

 

Возникла проблема, когда мы добавляем новые продажи, лиды, контрагентов и контактов, то при поиске мы их не может найти. Уже и очищали Redis, перезапускали весь CRM, но результаты так найти и не получилось.

 

Может кто-то может подсказать, как решить эту проблему? Заранее спасибо.

Нравится

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

Поиск ищет хоть что-то или только новые не находит?

Если приложение on-site, то нужно смотреть настройки эластика (если он вообще настроен).

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

Трефилов Павел Сергеевич,

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

Добрый день. Возможно, проблема с настройкой доступа. Если зайти под системным администратором, также не находит записи?

Здравствуйте, судя по описанию у Вас на сайте не включилась мгновенная индексация новых записей по шедулеру.
Проверьте корректность заполнения системной настройки GlobalSearchIndexingApiUrl.
Для оперативного решения вопроса на период диагностики настроек проведите полную индексацию данных в системе.
Для версии глобального поиска 2.0:
Выполните PUT запрос вида :http://[ GS-WEB-API ]:81/indexation/{siteName}/reindex/full
Детальнее описано в статье:https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

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