XF 2.2 Настройки поиска, ошибки, проблемы

Версия XenForo
2.2.17

liner

Проверенные
Сообщения
1,084
Решения
3
Реакции
416
Баллы
19,595
Коллеги, прошу помочь с примером настройки поиска Elastic и поиска вообще.
Память жрет уже 12 гиг
Перестало корректно работать, боты заваливают поиск такой нагрузкой, что временно отключил даже для гостей.
Ну и ошибки валятся вот такие
Код:
Журнал ошибки сервера
ErrorException: {"sort":["_score",{"date":"desc"}],"docvalue_fields":["discussion_id","user","date"],"_source":false,"size":10,"query":{"bool":{"filter":[{"term":{"type":"thread"}},{"bool":{"should":[{"term":{"discussion_user":360}},{"bool":{"must_not":[{"terms":{"node":[292,27,269,332,352,300,272,282,144,298,86,12,318,299,302,304,303,307,306,305,317,313,316,308,383,378,309,327,326,325,324,323,322,321,328,315,361,362,246,356,380,381,340,206,215,241,357]}}]}}],"minimum_should_match":1}}],"must_not":[{"exists":{"field":"hidden"}},{"terms":{"node":[319,280]}},{"term":{"thread":115373}}],"must":[{"function_score":{"query":{"multi_match":{"type":"most_fields","query":"\u041e\u0431\u0437\u043e\u0440 \u043a\u0438\u043d\u043e\u043f\u0440\u043e\u043a\u0430\u0442\u0430","operator":"or","fields":["title^1.4","elasticess_title","title.exact^2"]}},"functions":[{"exp":{"date":{"origin":1781692894,"decay":0.5,"scale":315360000}}},{"filter":{"term":{"node":20}},"weight":3}]}}]}}} src/XF/Error.php:77
Сгенерирована пользователем: gav_vrusha 17 Июнь 2026 в 13:41
Трассировка стека
#0 src/XF.php(219): XF\Error->logError('{"sort":["_scor...', false)
#1 src/addons/SV/SearchImprovements/XFES/Elasticsearch/Api.php(48): XF::logError('{"sort":["_scor...')
#2 src/addons/XFES/Search/Source/Elasticsearch.php(750): SV\SearchImprovements\XFES\Elasticsearch\Api->search(Array)
#3 src/addons/SV/SearchImprovements/Search/ExecuteSearchWrapper.php(32): XFES\Search\Source\Elasticsearch->executeSearch(Object(SV\ElasticSearchEssentials\XF\Search\Query\KeywordQuery), Array, 10)
#4 src/addons/XFES/Search/Source/Elasticsearch.php(145): SV\SearchImprovements\XFES\Search\Source\Elasticsearch->executeSearch(Object(SV\ElasticSearchEssentials\XF\Search\Query\KeywordQuery), Array, 10)
#5 src/XF/Search/Search.php(185): XFES\Search\Source\Elasticsearch->search(Object(SV\ElasticSearchEssentials\XF\Search\Query\KeywordQuery), 10)
#6 src/XF/Search/Search.php(214): XF\Search\Search->XF\Search\{closure}(Object(SV\ElasticSearchEssentials\XF\Search\Query\KeywordQuery), 10)
#7 src/addons/SV/ElasticSearchEssentials/XF/Search/Search.php(48): XF\Search\Search->executeSearch(Object(SV\ElasticSearchEssentials\XF\Search\Query\KeywordQuery), 10, Object(Closure), true)
#8 src/XF/Search/Search.php(180): SV\ElasticSearchEssentials\XF\Search\Search->executeSearch(Object(SV\ElasticSearchEssentials\XF\Search\Query\KeywordQuery), 10, Object(Closure), true)
#9 src/addons/SV/ElasticSearchEssentials/Service/AutoCompleter.php(539): XF\Search\Search->search(Object(SV\ElasticSearchEssentials\XF\Search\Query\KeywordQuery), 10, true)
#10 src/addons/SV/ElasticSearchEssentials/Service/SimilarContentFinder.php(367): SV\ElasticSearchEssentials\Service\AutoCompleter->getResults()
#11 src/addons/SV/ElasticSearchEssentials/XFES/Widget/SimilarThreads.php(95): SV\ElasticSearchEssentials\Service\SimilarContentFinder->getSimilarContents()
#12 src/addons/SV/ElasticSearchEssentials/XFES/Widget/SimilarThreads.php(76): SV\ElasticSearchEssentials\XFES\Widget\SimilarThreads->getSimilarThreadIdsFromEss(Object(SV\SearchImprovements\XF\Entity\ThreadCollab))
#13 src/addons/SV/ElasticSearchEssentials/XFES/Widget/SimilarThreads.php(56): SV\ElasticSearchEssentials\XFES\Widget\SimilarThreads->getSimilarThreadFromEss(Object(SV\SearchImprovements\XF\Entity\ThreadCollab))
#14 src/addons/XFES/Widget/SimilarThreads.php(61): SV\ElasticSearchEssentials\XFES\Widget\SimilarThreads->getSimilarThreadsCache(Object(SV\SearchImprovements\XF\Entity\ThreadCollab))
#15 src/addons/SV/ElasticSearchEssentials/XFES/Widget/SimilarThreads.php(39): XFES\Widget\SimilarThreads->render()
#16 internal_data/code_cache/widgets/_145_xfes_thread_view_below_quick_reply_similar_threads.php(5): SV\ElasticSearchEssentials\XFES\Widget\SimilarThreads->render()
#17 src/XF/Template/Templater.php(7729): XF\SubContainer\Widget->{closure}(Object(MaZ\AMP\XF\Template\XF22\Templater), Array, Array)
#18 src/XF/SubContainer/Widget.php(168): XF\Template\Templater->renderWidgetClosure(Object(Closure), Array)
#19 src/XF/Template/Templater.php(1940): XF\SubContainer\Widget->getCompiledWidget(Array, Array)
#20 internal_data/code_cache/templates/l2/s1/public/thread_view.php(1239): XF\Template\Templater->widgetPosition('thread_view_bel...', Array)
#21 src/XF/Template/Templater.php(1655): XF\Template\Templater->{closure}(Object(MaZ\AMP\XF\Template\XF22\Templater), Array, Object(XF\Template\ExtensionSet))
#22 src/addons/MaZ/AMP/XF/Template/XF22/Templater.php(52): XF\Template\Templater->renderTemplate('thread_view', Array, true, NULL)
#23 src/XF/Template/Template.php(24): MaZ\AMP\XF\Template\XF22\Templater->renderTemplate('public:thread_v...', Array)
#24 src/XF/Mvc/Renderer/Html.php(50): XF\Template\Template->render()
#25 src/XF/Mvc/Dispatcher.php(460): XF\Mvc\Renderer\Html->renderView('XF:Thread\\View', 'public:thread_v...', Array)
#26 src/XF/Mvc/Dispatcher.php(442): XF\Mvc\Dispatcher->renderView(Object(XF\Mvc\Renderer\Html), Object(XF\Mvc\Reply\View))
#27 src/XF/Mvc/Dispatcher.php(402): XF\Mvc\Dispatcher->renderReply(Object(XF\Mvc\Renderer\Html), Object(XF\Mvc\Reply\View))
#28 src/XF/Mvc/Dispatcher.php(60): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'html')
#29 src/XF/App.php(2513): XF\Mvc\Dispatcher->run()
#30 src/XF.php(524): XF\App->run()
#31 index.php(20): XF::runApp('XF\\Pub\\App')
#32 {main}

1781693165282.png
 
Последнее редактирование:
Elastic это очень требовательная штука, я писал по этому вопросу в соседней теме.

Сам я перешел на форк Sphinx'a >Manticore Search. Быстро, дает оптимизацию в бд для поиска и не кладет сервер на лопатки по требованию к ресурсам)

По логу, причину так не покажет, нужно как-то так:
  • соседние записи в журнале ошибок около 13:41 17.06 — если параллельно где-то кидается настоящий exception с текстом, он будет отдельной строкой;
  • сам ES — curl -s localhost:9200/_cluster/health?pretty, место на диске под его данными (забитый диск уводит индекс в read-only по flood-stage watermark — частая причина именно таких обрывов), и его лог за эту минуту; частый сценарий вообще для этого стека — ES временно не отвечает, таймаут на коннекте или connection refused, если он в этот момент перезапускался или был перегружен
  • быстрее всего — взять JSON из лога и кинуть прямо в ES: curl -s " " -H 'Content-Type: application/json' -d 'ТЕЛО_ИЗ_ЛОГА' (хост/индекс — из config.php $config['elasticsearch'] или Admin CP → Elasticsearch). ES ответит настоящей причиной текстом, минуя все слои логирования аддонов.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу