ใน Elasticsearch 2.3 มีความสามารถใหม่ที่น่าสนใจ
ก็คือ Re-index API (_reindex)
ทำหน้าที่ย้ายข้อมูลจาก index หนึ่งไปยังอีก index หนึ่ง
โดยปกติเราจะใช้เครื่องมืออื่น ๆ มาช่วย
ดังนั้นเรามาลองใช้งานกันดีกว่าว่า API ตัวนี้เป็นอย่างไร ?
ปล. การใช้งานควรคิดให้มาก ๆ เนื่องจากยังมีสถานะเป็น experiment นะ สามารถเปลี่ยนแปลงได้ตลอดเวลา แถมการเปลี่ยนแปลงนั้น ๆ ไม่สนับสนุนของเดิมด้วยนะ (Not backward compatible)
เริ่มด้วยปัญหาที่ผู้ใช้งาน Elasticsearch พบเจอกันมาก
คือ เมื่อทำการ indexing ข้อมูลเข้ามายัง Elasticsearch แล้ว พบว่า mapping ของข้อมูลไม่ถูกต้อง ยกตัวอย่างเช่น เมื่อนำข้อมูลมาแสดงใน Kibana แล้วจะแจ้งเตือนดังรูป คำถามคือ เราจะต้องแก้ไขปัญหานี้อย่างไรดี ? ตอบง่าย ๆ คือ ก็ทำการ re-indexing ไงล่ะ คำถามต่อมาก็คือ แล้วทำอย่างไรกันดี ? คำตอบง่าย ๆ คือ- ลบ index แล้วสร้างใหม่ไงล่ะ ?
- ถ้ามีข้อมูลก็ต้องสร้าง index ใหม่ จากนั้นทำการย้ายข้อมูล
- แน่นอนว่าต้องใช้งาน Alias index ด้วยเสมอ
เมื่อ Elasticsearch 2.3 ถูกปล่อยออกมาก็มี Re-indexing API
ดังนั้นมาดูกันว่าใช้งานกันอย่างไร ? ขั้นตอนที่ 1 ทำการสร้าง index ใหม่ก่อน ชื่อว่า sample_new ซึ่งมี mapping ดังนี้ [gist id="d03e1ba2aad382cdd1f521a9a12f716c" file="new_way_create_index.sh"] ขั้นตอนที่ 2 ทำการย้ายข้อมูลด้วย _reindex API ดังนี้ [gist id="d03e1ba2aad382cdd1f521a9a12f716c" file="new_way_reindexing.sh"] คำอธิบาย ในการใช้งาน Re-index api ประกอบไปด้วย 2 ส่วนคือ- source คือ index ต้นทาง
- dest คือ index ปลายทาง