#elasticsearch #sugarcrm
#elasticsearch #sugarcrm
Вопрос:
Я создал кучу пользовательских modules
пакетов, объединенных в один пакет, в промежуточном экземпляре SugarCRM 8.0.0. Чтобы перенести их, modules
я решил publish
изменить пакет, чтобы я мог загрузить устанавливаемый zip-файл в другой экземпляр. К сожалению, когда я пытаюсь загрузить zip-файл на принимающий экземпляр с помощью загрузчика модуля, установка зависает на 80 процентах, выдает ошибку в sugarlog
Я запускаю ElasticSearch 5.4
который совместим с экземпляром Sugar, который я запускаю. Это ошибка, которая отображается в журналах:
Thu Mar 28 17:54:19 2019 [1786][1][FATAL] Elasticsearch request failure: no such index [index: ab164c0013004724c8eba5f5f6f3f646_shared]
Thu Mar 28 17:54:19 2019 [1786][1][FATAL] Exception in Controller: ElasticaExceptionResponseException: no such index [index: ab164c0013004724c8eba5f5f6f3f646_shared] in /var/www/html/SugarPro-Full-8/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php:179
Stack trace:
#0 /var/www/html/SugarPro-Full-8/vendor/ruflin/elastica/lib/Elastica/Request.php(193): ElasticaTransportHttp->exec(Object(ElasticaRequest), Array)
#1 /var/www/html/SugarPro-Full-8/vendor/ruflin/elastica/lib/Elastica/Client.php(674): ElasticaRequest->send()
#2 /var/www/html/SugarPro-Full-8/src/Elasticsearch/Adapter/Client.php(355): ElasticaClient->request('ab164c001300472...', 'PUT', Array, Array)
#3 /var/www/html/SugarPro-Full-8/vendor/ruflin/elastica/lib/Elastica/Client.php(706): SugarcrmSugarcrmElasticsearchAdapterClient->request('ab164c001300472...', 'PUT', Array, Array)
#4 /var/www/html/SugarPro-Full-8/vendor/ruflin/elastica/lib/Elastica/Index.php(562): ElasticaClient->requestEndpoint(Object(ElasticsearchEndpointsIndicesMappingPut))
#5 /var/www/html/SugarPro-Full-8/vendor/ruflin/elastica/lib/Elastica/Type.php(523): ElasticaIndex->requestEndpoint(Object(ElasticsearchEndpointsIndicesMappingPut))
#6 /var/www/html/SugarPro-Full-8/vendor/ruflin/elastica/lib/Elastica/Type/Mapping.php(250): ElasticaType->requestEndpoint(Object(ElasticsearchEndpointsIndicesMappingPut))
#7 /var/www/html/SugarPro-Full-8/src/Elasticsearch/Index/IndexManager.php(486): ElasticaTypeMapping->send()
#8 /var/www/html/SugarPro-Full-8/src/Elasticsearch/Index/IndexManager.php(390): SugarcrmSugarcrmElasticsearchIndexIndexManager->sendMapping(Object(ElasticaTypeMapping))
#9 /var/www/html/SugarPro-Full-8/src/Elasticsearch/Index/IndexManager.php(285): SugarcrmSugarcrmElasticsearchIndexIndexManager->createIndices(Object(SugarcrmSugarcrmElasticsearchIndexIndexCollection), Object(SugarcrmSugarcrmElasticsearchAnalysisAnalysisBuilder), Object(SugarcrmSugarcrmElasticsearchMappingMappingCollection), false)
#10 /var/www/html/SugarPro-Full-8/src/Elasticsearch/Index/IndexManager.php(200): SugarcrmSugarcrmElasticsearchIndexIndexManager->syncIndices(Array, false)
#11 /var/www/html/SugarPro-Full-8/src/SearchEngine/Engine/Elastic.php(113): SugarcrmSugarcrmElasticsearchIndexIndexManager->addMappings(Array)
#12 /var/www/html/SugarPro-Full-8/ModuleInstall/ModuleInstaller.php(3489): SugarcrmSugarcrmSearchEngineEngineElastic->addMappings(Array)
#13 /var/www/html/SugarPro-Full-8/ModuleInstall/ModuleInstaller.php(168): ModuleInstaller->setup_elastic_mapping()
#14 /var/www/html/SugarPro-Full-8/modules/Administration/UpgradeWizard_commit.php(342): ModuleInstaller->install('cache/upgrades/...')
#15 /var/www/html/SugarPro-Full-8/include/MVC/View/SugarView.php(489): require_once('/var/www/html/S...')
#16 /var/www/html/SugarPro-Full-8/include/MVC/View/views/view.classic.php(43): SugarView->includeClassicFile('cache/upgrades/...')
#17 /var/www/html/SugarPro-Full-8/include/MVC/View/SugarView.php(152): ViewClassic->display(Array)
#18 /var/www/html/SugarPro-Full-8/include/MVC/Controller/SugarController.php(351): SugarView->process(Array)
#19 /var/www/html/SugarPro-Full-8/include/MVC/Controller/SugarController.php(299): SugarController->processView()
#20 /var/www/html/SugarPro-Full-8/include/MVC/SugarApplication.php(198): SugarController->execute()
#21 /var/www/html/SugarPro-Full-8/index.php(27): SugarApplication->execute()
#22 {main}
Thu Mar 28 17:54:19 2019 [1786][1][FATAL] ERROR: rmdir_recursive(): argument cache/upgrades/temp/ICB8l3 is not a file or a dir.
Я несколько раз пытался исправить и перестроить пакет, а также попытался опубликовать пакет снова, чтобы перепроверить, были ли какие-либо ошибки, которые я, возможно, не заметил. Я попытался использовать другой экземпляр для загрузки на случай, если мой текущий экземпляр может быть поврежден, но наблюдалось то же самое. Я не понимаю, что может быть причиной проблемы.
Комментарии:
1. вы пытались сбросить разрешение с помощью командной строки?
2. Да, я сбросил разрешения, а также перезапустил несколько раз
3. @noobdev Смогли ли вы устранить проблему?
4. @Jay извиняется за поздний ответ, я пробовал ваше решение, но, к сожалению, выдает мне ошибку «память исчерпана», когда я нажимаю
save
5. Установлен ли лимит памяти вашего php на 512 МБ? смотрите support.sugarcrm.com/Documentation/Sugar_Versions/8.0/Pro /…
Ответ №1:
Elasticsearch request failure: no such index [index: ...]
Это говорит о том, что индекс Elasticsearch отсутствует (или поврежден).
Как исправить:
- Войдите в Sugar с правами администратора
- Перейдите к администрированию -> Поиску (или глобальному поиску в некоторых версиях Sugar)
- Нажмите кнопку «Запланировать системный индекс» (и подтвердите предупреждение javascript, связанное с производительностью, если таковое имеется), после чего появится всплывающее окно со списком
- Прокрутите вниз во всплывающем окне и выберите «Удалить существующие данные при выполнении индексации. Будут проиндексированы только данные в выбранных модулях.«.
Этот шаг важен. Если вы забудете установить этот флажок, повторный индекс завершится неудачей (поскольку он пытается пополнить существующий индекс, а не воссоздавать его с нуля). - Подтвердите, нажав на кнопку «Индекс«. Это позволит (повторно) создать нужный вам индекс.
- Теперь вы должны снова иметь возможность устанавливать новые модули!
Примечания:
-
Название индекса Elasticsearch основано на значении
$sugar_config['unique_key']
inconfig.php
. Изменение этого значения и перестройка кэша приведут к тому, что Sugar будет искать новое имя индекса. Вам придется вызвать переиндексацию, как описано выше (если вы каким-либо образом не переименуете индекс в Elasticsearch, чтобы он был найден снова). -
Возможно, вновь созданный индекс останется пустым (чего должно быть достаточно для установки модуля), если не запущены ваши cron / планировщики. Если запущен планировщик поиска Elastic, он заполнит индекс данными в течение следующих минут / часов, и вы можете использовать поиск в правом верхнем углу Sugar.
-
Если у вас есть доступ к хост-системе сервера, вы также можете повторно создать индекс из командной строки:
bin/sugarcrm search:silent_reindex --clearData
(медленно, работает только на одном ядре процессора) или
bin/sugarcrm search:silent_reindex_mp --clearData
(быстрый, может использовать несколько ядер процессора)Для этого у
файлаbin/sugarcrm
должны быть разрешения на исполняемый файл.
(Первый и однопоточный способ также может работать с префиксомphp
вместо этого)
Последняя — или, возможно, обе — команды могут быть недоступны, если ваша версия Sugar сильно устарела.
Комментарии:
1. Есть идеи, почему индекс исчезнет и как предотвратить это в первую очередь?
2. Индексы ES обычно не «исчезают», если вы не переименуете конфигурацию
unique_key
(тогда Sugar будет искать индекс под другим именем) или если вы выполнили чистую переустановку ElasticSearch. Однако, по моему опыту, повреждения индекса иногда случаются. Но все еще очень редко и обычно со странными и непредсказуемыми проблемами, поэтому я бы не знал, как их предотвратить с самого начала. Если вы неоднократно сталкиваетесь с нарушенными индексами, попробуйте разобраться в ошибке (например, нарушение номера поля ES / ограничения длины) и посмотрите, можете ли вы настроить модули / поля / параметры поиска Sugar или конфигурацию ES, чтобы устранить проблему.