เพิ่มระบบค้นหาข้อความเต็มรูปแบบ Elasticsearch ลงใน Nextcloud
เชื่อมต่อระบบค้นหาไฟล์ของ Nextcloud กับ Elasticsearch จัดทำดัชนีเนื้อหาเอกสาร และเลือกการตั้งค่าที่เหมาะสมกับเซิร์ฟเวอร์และความต้องการด้านความปลอดภัยของคุณ
ในการค้นหาเนื้อหาภายในไฟล์ใน Nextcloud ให้ติดตั้งเฟรมเวิร์กการค้นหาข้อความเต็มรูปแบบ แอปแพลตฟอร์ม Elasticsearch และผู้ให้บริการไฟล์ จากนั้นเชื่อมต่อแอปกับเซิร์ฟเวอร์ Elasticsearch 8 ที่เข้ากันได้และสร้างดัชนี การดำเนินการนี้จะเพิ่มข้อความในเอกสารที่สามารถค้นหาได้ แต่ยังเพิ่มบริการแยกต่างหากสำหรับการรักษาความปลอดภัย การตรวจสอบ และการบำรุงรักษาด้วย README ของตัวเชื่อมต่อปัจจุบันระบุว่า Elasticsearch 8 เป็นเวอร์ชันหลักที่รองรับ ดังนั้นโปรดตรวจสอบความเข้ากันได้กับเวอร์ชันแอปที่ติดตั้งก่อนที่จะเลือกเวอร์ชัน Elasticsearch ที่เฉพาะเจาะจง
Elasticsearch ช่วยให้ผู้ใช้ค้นหาคำภายในเอกสารได้ นอกเหนือจากชื่อไฟล์และข้อมูลเมตาพื้นฐาน ข้อเสียคือต้องมีบริการเพิ่มเติมที่ต้องดูแลรักษาความปลอดภัยและบำรุงรักษา รวมถึงการใช้หน่วยความจำ ดิสก์ และ CPU ในระหว่างการจัดทำดัชนี ระบบคลาวด์ขนาดเล็กอาจไม่คุ้มค่ากับค่าใช้จ่ายเหล่านี้ แต่ทีมที่มีเอกสารจำนวนมากอาจพบว่าการค้นหาเนื้อหาคุ้มค่ากับค่าใช้จ่าย
แอปพลิเคชันสามตัวประกอบกันเป็นระบบนี้ ได้แก่ การค้นหาข้อความเต็มรูปแบบที่ทำหน้าที่ประสานงานระหว่างผู้ให้บริการและแพลตฟอร์ม Elasticsearch ที่เชื่อมต่อเฟรมเวิร์กกับเอนจิน และ Files ที่ให้ข้อมูลเนื้อหาไฟล์ สามารถเลือกแอปพลิเคชันแพลตฟอร์มได้เพียงครั้งละหนึ่งแอปเท่านั้น โปรดดูREADME ของเฟรมเวิร์กและREADME ของผู้ให้บริการ Files
ตัวอย่าง Linux เหล่านี้ใช้พาธและwww-dataบัญชีผู้ใช้ของ Debian หรือ Ubuntu ปรับพาธและผู้ใช้บริการสำหรับคอนเทนเนอร์หรือระบบปฏิบัติการอื่นๆ
ตรวจสอบเวอร์ชัน Nextcloud และแอปของคุณก่อนติดตั้ง Elasticsearch เอกสาร README ของตัวเชื่อมต่อระบุว่า ตั้งแต่เวอร์ชันแอป 26.0.0 เป็นต้นไป จะรองรับ Elasticsearch 8 อย่าคิดว่า Elasticsearch 9 จะใช้งานร่วมกันได้เพียงเพราะเป็นเวอร์ชันใหม่กว่า โปรดตรวจสอบเอกสารREADME ของตัวเชื่อมต่อและวิกิการติดตั้งสำหรับเวอร์ชันของคุณ
ติดตั้ง Elasticsearch โดยใช้คำแนะนำของ Elastic สำหรับระบบปฏิบัติการและเวอร์ชันหลักที่เข้ากันได้ แพ็คเกจ Debian ของ Elastic มี OpenJDK รวมอยู่ด้วย ดังนั้นโดยปกติแล้วจึงไม่จำเป็นต้องติดตั้ง Java แยกต่างหากสำหรับแพ็คเกจนั้น ดูเอกสารการติดตั้งแพ็คเกจ Debian ของ Elasticควรจำกัดการเข้าถึง Elasticsearch ไว้เฉพาะจากโฮสต์ Nextcloud หรือเครือข่ายแอปพลิเคชันส่วนตัวเท่านั้น เว้นแต่สถาปัตยกรรมของคุณจะกำหนดเป็นอย่างอื่น Elasticsearch 8 เปิดใช้งานคุณสมบัติความปลอดภัยระหว่างการตั้งค่าแพ็คเกจ รักษาการตรวจสอบสิทธิ์และ TLS สำหรับการใช้งานผ่านเครือข่าย และอย่าเปิดเผยปลายทางการค้นหาที่ไม่ได้รับการตรวจสอบสิทธิ์สู่สาธารณะทางอินเทอร์เน็ต
เมื่อบริการเริ่มต้นแล้ว ให้ทดสอบเอนด์พอยต์ในเครื่องของคุณโดยใช้รูปแบบและข้อมูลรับรองที่กำหนดไว้ระหว่างการติดตั้ง สำหรับอินสแตนซ์ที่ปลอดภัยในเครื่อง คำขออาจมีลักษณะดังนี้curl --cacert /path/to/http_ca.crt -u elastic https://localhost:9200; ป้อนรหัสผ่านเมื่อได้รับแจ้งแทนที่จะบันทึกไว้ในประวัติคำสั่งเชลล์ ใช้ใบรับรอง CA ที่สร้างขึ้นสำหรับการติดตั้งของคุณ ไม่ใช่เส้นทางตัวยึดตำแหน่ง การตอบสนองที่สำเร็จควรระบุโหนดและเวอร์ชันของ Elasticsearch หากการตรวจสอบนี้ล้มเหลว ให้แก้ไขบริการ ความน่าเชื่อถือของใบรับรอง หรือข้อมูลรับรองก่อนที่จะกำหนดค่า Nextcloud
ใช้หน้าแอปของ Nextcloud เพื่อติดตั้งและเปิดใช้งานการค้นหาข้อความเต็ม (Full text search) , การค้นหาข้อความเต็ม - แพลตฟอร์ม Elasticsearch (Full text search - Elasticsearch Platform)และการค้นหาข้อความเต็ม - ไฟล์ (Full text search - Files ) นอกจากนี้ คุณยังสามารถใช้occเครื่องมือการจัดการแบบบรรทัดคำสั่งของ Nextcloud จากไดเร็กทอรีการติดตั้ง Nextcloud ได้อีกด้วย สำหรับการติดตั้งบน Debian หรือ Ubuntu รูปแบบจะเป็นดังนี้:
cd /var/www/nextcloud
sudo -E -u www-data php occ app:install fulltextsearch
sudo -E -u www-data php occ app:install fulltextsearch_elasticsearch
sudo -E -u www-data php occ app:install files_fulltextsearch
ใช้บัญชี HTTP ของระบบปฏิบัติการของคุณและปฏิบัติตามคำแนะนำ occ ของ Nextcloud หากติดตั้งแอปแล้วแต่ถูกปิดใช้งาน ให้ใช้ ตรวจสอบocc app:enable APP_IDให้แน่ใจว่าแอปทั้งสามแอปใช้งานร่วมกับ Nextcloud เวอร์ชันของคุณได้
เปิดการตั้งค่าผู้ดูแลระบบและเลือกส่วนการค้นหาข้อความเต็ม เลือก Elasticsearch เป็นแพลตฟอร์มการค้นหา จากนั้นป้อนที่อยู่เซิร์ฟเล็ตของ Elasticsearch ชื่อดัชนี และข้อมูลรับรองการเชื่อมต่อหรือการตั้งค่าใบรับรองที่จำเป็นใดๆ ที่เปิดเผยโดยตัวเชื่อมต่อที่คุณติดตั้ง ที่อยู่ดังกล่าวต้องสามารถเข้าถึงได้จากกระบวนการเซิร์ฟเวอร์ Nextcloud หากทั้งสองบริการทำงานในเครือข่ายคอนเทนเนอร์เดียวกันlocalhostโดยปกติแล้วจะชี้ไปยังคอนเทนเนอร์ Nextcloud เอง ไม่ใช่คอนเทนเนอร์ Elasticsearch ให้ใช้ชื่อบริการ Elasticsearch หรือชื่อโฮสต์ภายในแทน
ใช้ชื่อดัชนีตัวพิมพ์เล็ก เช่นnextcloud; กำหนดดัชนีแยกกันให้กับแต่ละคลาวด์หากมีการใช้บริการร่วมกัน การตั้งชื่อที่แยกจากกันจะช่วยในการบริหารจัดการ แต่ไม่สามารถทดแทนการควบคุมการเข้าถึงได้ อย่าให้ข้อมูลประจำตัวปรากฏในภาพหน้าจอ ตั๋ว และประวัติการใช้งานเชลล์
ในการตั้งค่าผู้ให้บริการไฟล์ ให้เปิดใช้งานการจัดทำดัชนีสำหรับประเภทไฟล์และช่วงขนาดที่ผู้ใช้ของคุณต้องการ เนื้อหาที่ค้นหาได้ขึ้นอยู่กับผู้ให้บริการและการสนับสนุนการดึงข้อมูล การจัดทำดัชนีเฉพาะชื่อไฟล์จะไม่ทำให้ข้อความภายในไฟล์ PDF สามารถค้นหาได้ ตัวประมวลผลไฟล์แนบของ Elasticsearch จะดึงข้อความจากรูปแบบไฟล์ทั่วไป เช่น PDF และเอกสาร Office แต่มีข้อจำกัดในการดึงข้อมูลและรูปแบบที่รองรับ ใน Elasticsearch 8 ฟังก์ชันการนำเข้าไฟล์แนบรวมอยู่ในชุดการแจกจ่ายแล้ว โปรดดูข้อมูลอ้างอิงตัวประมวลผลไฟล์แนบของ Elasticสำหรับการสแกนหรือรูปภาพ การดึงข้อความจากเอกสารทั่วไปไม่ใช่ OCR: เพิ่มผู้ให้บริการ OCR เฉพาะเมื่อคุณต้องการความสามารถนั้นและได้ตรวจสอบข้อกำหนดแล้วเท่านั้น รักษาขีดจำกัดขนาดไฟล์ให้เหมาะสมบนเซิร์ฟเวอร์ที่มีทรัพยากรจำกัด
ทำการตรวจสอบสถานะสุขภาพก่อนทำการจัดทำดัชนี จากไดเร็กทอรี Nextcloud ให้ใช้คำสั่งต่อไปนี้:
sudo -E -u www-data php occ fulltextsearch:check
แก้ไขข้อผิดพลาดเกี่ยวกับการเชื่อมต่อ แพลตฟอร์ม หรือผู้ให้บริการที่รายงานมาก่อน จากนั้นจึงเริ่มการจัดทำดัชนีเบื้องต้น:
sudo -E -u www-data php occ fulltextsearch:index
การทำงานครั้งแรกจะตรวจสอบไฟล์ของผู้ใช้ที่เลือกไว้ และอาจใช้เวลานาน โปรดรักษาความเสถียรของเซสชัน SSH หรือเรียกใช้คำสั่งในโปรแกรมจัดการเทอร์มินัล เช่นtmuxและตรวจสอบการใช้งาน CPU หน่วยความจำ และพื้นที่ดิสก์ การสร้างดัชนีจะคัดลอกข้อความที่ดึงออกมาและข้อมูลเมตาของไฟล์ไปยัง Elasticsearch ซึ่งไม่ใช่สิ่งที่จะมาทดแทนการสำรองข้อมูลของ Nextcloud โปรดวางแผนที่จะปกป้องดัชนีการค้นหาและข้อมูลประจำตัว และโปรดจำไว้ว่าการลบหรือสร้างดัชนีใหม่ อาจต้องทำการสร้างดัชนีใหม่ทั้งหมดอีกครั้ง
สำหรับการอัปเดตอย่างต่อเนื่อง ตรวจสอบให้แน่ใจว่างานเบื้องหลังของ Nextcloud ทำงานได้อย่างน่าเชื่อถือ โครงการนี้ยังได้บันทึก วิธี fulltextsearch:liveการใช้งาน worker สำหรับการจัดทำดัชนีแบบเกือบจะทันที ซึ่งสามารถลดความล่าช้าในการอัปเดตได้ แต่จะเพิ่มบริการที่ต้องดูแล เริ่มต้นด้วยงานที่กำหนดเวลาไว้ก่อน และเพิ่ม worker เฉพาะเมื่อความล่าช้ามีความสำคัญ ปรับตัวอย่างบริการต้นทางให้เข้ากับเส้นทาง บัญชี และลำดับการเริ่มต้นฐานข้อมูลของคุณ
หลังจากกระบวนการจัดทำดัชนีเสร็จสมบูรณ์ ให้ค้นหาวลีที่โดดเด่นซึ่งปรากฏอยู่ภายในเอกสารทดสอบขนาดเล็ก แต่ไม่อยู่ในชื่อไฟล์ ตรวจสอบว่า Nextcloud ส่งคืนไฟล์ที่คาดหวังให้กับผู้ใช้ที่มีสิทธิ์ในการอ่าน จากนั้นอัปโหลดหรือแก้ไขเอกสารทดสอบฉบับที่สอง อนุญาตให้งานเบื้องหลังที่กำหนดค่าไว้หรือตัวทำงานแบบเรียลไทม์ทำงาน และทำการค้นหาซ้ำ การตรวจสอบสถานะที่สำเร็จเพียงอย่างเดียวไม่ได้พิสูจน์ว่าเนื้อหาไฟล์ได้รับการจัดทำดัชนีแล้ว
หากแสดงเฉพาะชื่อไฟล์ ให้ตรวจสอบผู้ให้บริการไฟล์ ประเภทไฟล์และการตั้งค่าขนาด การรองรับการแตกไฟล์ และบันทึกดัชนี สำหรับปัญหาการเชื่อมต่อ ให้ตรวจสอบปลายทางจากเครือข่ายของ Nextcloud ความเชื่อถือ TLS และข้อมูลรับรอง
เลือกใช้ Elasticsearch เมื่อการค้นหาเนื้อหามีความสำคัญมากพอที่จะคุ้มค่ากับการดูแลรักษาระบบที่มีสถานะเพิ่มเติมอีกตัวหนึ่ง หากการค้นหาด้วยชื่อไฟล์เพียงพอแล้ว ให้ข้ามขั้นตอนการเพิ่มทรัพยากรและภาระด้านความปลอดภัยนี้ไป ก่อนการอัปเกรดในสภาพแวดล้อมการใช้งานจริง โปรดตรวจสอบการใช้งาน Nextcloud, แอป และ Elasticsearch ที่ถูกต้องอีกครั้ง การตั้งค่านี้ไม่ได้รองรับวิธีการปรับใช้ทุกวิธี
เชื่อมต่อระบบค้นหาไฟล์ของ Nextcloud กับ Elasticsearch จัดทำดัชนีเนื้อหาเอกสาร และเลือกการตั้งค่าที่เหมาะสมกับเซิร์ฟเวอร์และความต้องการด้านความปลอดภัยของคุณ
ตั้งค่า Nextcloud ให้ลบไฟล์ที่ถูกลบหลังจากระยะเวลาการเก็บรักษาที่กำหนดไว้ กำหนดเวลาการทำงานเบื้องหลังอย่างน่าเชื่อถือ และหลีกเลี่ยงคำสั่งที่ล้างถังขยะของผู้ใช้ทุกคน
เรียกใช้ฟังก์ชันซ่อมแซม OCC ของ Nextcloud อย่างปลอดภัย ดูตัวอย่างการเปลี่ยนแปลงฐานข้อมูล และตรวจสอบว่าเหตุใดคำเตือนจึงยังคงปรากฏอยู่
อนุญาตให้ Nextcloud อัปโหลดไฟล์ขนาดใหญ่ขึ้นได้โดยการปรับการตั้งค่า PHP, Nginx หรือ Apache, พื้นที่จัดเก็บชั่วคราว และระยะเวลาหมดเวลาให้ตรงกัน และตรวจสอบว่าข้อจำกัดใดที่กำลังบล็อกไฟล์อยู่
ตั้งค่าขีดจำกัดหน่วยความจำ PHP ที่ Nextcloud ใช้จริง รีสตาร์ทบริการที่ถูกต้อง และยืนยันการตั้งค่า 512 MB ในภาพรวมผู้ดูแลระบบ
เชื่อมต่อบัคเก็ตจัดเก็บข้อมูลแบบอ็อบเจ็กต์ที่เข้ากันได้ใน Nextcloud โดยใช้แบ็กเอนด์ S3 พร้อมด้วยเอนด์พอยต์ ข้อมูลรับรอง ขอบเขตการเข้าถึง และขั้นตอนการตรวจสอบที่ถูกต้อง
ย้ายไดเร็กทอรีข้อมูล Nextcloud บน Linux ไปยังไดรฟ์ภายนอกอย่างปลอดภัย โดยใช้การเมานต์ UUID แบบถาวร โหมดบำรุงรักษา สำเนาที่ตรวจสอบแล้ว และซิมลิงก์เส้นทางเดิม
กู้คืนการเข้าถึง Nextcloud หลังจากการอัปเดตโดยการวินิจฉัยข้อผิดพลาด SQL ตรวจสอบการเชื่อมต่อฐานข้อมูล และดำเนินการย้ายข้อมูลที่หยุดชะงักให้เสร็จสมบูรณ์อย่างปลอดภัย
ใช้คำสั่ง OCC ของ Nextcloud เพื่อรีเซ็ตรหัสผ่านผู้ดูแลระบบจากเชลล์เซิร์ฟเวอร์ พร้อมคำแนะนำสำหรับชื่อผู้ใช้ สิทธิ์ และผู้ให้บริการเข้าสู่ระบบภายนอก
ล้างคำเตือน HSTS ของ Nextcloud โดยการตั้งค่าส่วนหัวที่ Apache, NGINX หรือพร็อกซี TLS ของคุณ จากนั้นตรวจสอบการตอบสนอง HTTPS สาธารณะอย่างปลอดภัย