weseek / growi

:anchor: GROWI - Team collaboration software using markdown
https://growi.org
MIT License
1.33k stars 220 forks source link

[7.1.2] 検索機能が使えない #9429

Closed komanezumi closed 2 days ago

komanezumi commented 6 days ago

Environment

Host

item version
OS ubuntu
GROWI 7.1.2
node.js 20.18.0
npm 10.8.2
Using Docker yes
Using growi-docker-compose no

Client

item version
OS Windows 11 Pro 23H2
browser Google Chrome 131.0.6778.69

How to reproduce? (再現手順)

  1. 検索にキーワードを入力して検索する

What happens? (症状)

What is the expected result? (期待される動作)

Note

yuki-takei commented 6 days ago

@komanezumi ちょっと情報が少ないので以下確認お願いします。

  1. v7.1.x へのアップグレードガイド を確認してください
  2. 管理画面の全文検索管理からインデックスのリビルドを試してください
    • その際にサーバーログに何か出ていないか確認してください
  3. 検索実行時にサーバーログに何か出ていないか確認してください

2と3の情報をいただければトラブルシュートのお手伝いができるかもしれません。

komanezumi commented 4 days ago

ありがとうございます。 教えていただいた情報から再度確認したところ、MongoDBのバージョンが古かったことと、ElasticSearchのプラグインの導入について問題があることが分かりました。

MongoDBはv4.4からv8にアップグレードし、ElasticSearchのプラグインは正常にインストールしました。 その結果、Growi7.1.2でも全文検索管理のインデックスのリビルドが動くようになりました。

しかし、リビルドを開始すると『インデックスの状態』が『リビルド中または破損しています』の状態のままになり、ずっと待っていると『Failed to retrive AdminHome data』というエラーがブラウザ上に出力されます。

それでも、1500件位までのサイトではインデックスの生成が完了しているようで、検索ができますし、全文検索管理のページを再表示すると状態は正常になっています。

4000件近くあるサイトで同様にリビルドを実行すると添付画像のように2000件のところで止まったままになります。 そして以下のエラーログが出力されます。 再度全文検索管理のページを表示すると『リビルド中または破損しています』の状態ですが、検索することはできます。 しかし、全てのページが検索できていないようで、特に新しいページがインデックスに含まれていないように思います。 インデックスのリビルド

{"name":"growi","hostname":"growi-xxxxx","pid":1,"level":50,"msg":"Unhandled Rejection: Promise: Promise {\n  <rejected> TypeError: Cannot read properties of null (reading 'map')\n      at ElasticsearchDelegator.generateDocContentsRelatedToRestriction (/opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:285:50)\n      at ElasticsearchDelegator.prepareBodyForCreate (/opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:314:21)\n      at /opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:406:34\n      at Array.forEach (<anonymous>)\n      at Writable.write [as _write] (/opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:405:23)\n      at doWrite (node:internal/streams/writable:596:12)\n      at clearBuffer (node:internal/streams/writable:781:7)\n      at onwrite (node:internal/streams/writable:651:7)\n      at Writable.write [as _write] (/opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:432:17)\n      at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n} Reason: TypeError: Cannot read properties of null (reading 'map')\n    at ElasticsearchDelegator.generateDocContentsRelatedToRestriction (/opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:285:50)\n    at ElasticsearchDelegator.prepareBodyForCreate (/opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:314:21)\n    at /opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:406:34\n    at Array.forEach (<anonymous>)\n    at Writable.write [as _write] (/opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:405:23)\n    at doWrite (node:internal/streams/writable:596:12)\n    at clearBuffer (node:internal/streams/writable:781:7)\n    at onwrite (node:internal/streams/writable:651:7)\n    at Writable.write [as _write] (/opt/growi/apps/app/dist/server/service/search-delegator/elasticsearch.js:432:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","time":"2024-11-23T06:45:55.696Z","v":0}
yuki-takei commented 2 days ago

@komanezumi #9382 と同じ問題かと思いますので参考にしてください

こちらの Issue はクローズとします。