Screen Shot 2558-12-18 at 4.11.24 PM
เนื่องจาก Elasticsearch นั้นออก version 2.x มาแล้ว
โดยตอนนี้ถึง 2.1 แล้วนะ รู้ยัง ?
ดังนั้น ถ้าใครยังใช้ 1.x และต้องการจะย้ายมายัง 2.x
จำเป็นต้องรู้ว่ามีการเปลี่ยนแปลงอะไรบ้าง
หนึ่งในนั้นคือ feature ที่ถูกเอาออกไป
มาดูกันว่ามีอะไรบ้าง ?

1. River

จากก่อนหน้านี้คือ 1.7 ได้ทำการแจ้ง deprecated feature นี้ไปแล้ว
ดังนั้นใน 2.x จึงเอาออกไปโดยปริยาย
ซึ่งถ้าใครยังใช้ river อยู่ก็ต้องคิดให้ดี ๆ

2. Facet

เนื่องจาก Facet เป็น API ที่ deprecated มานานแล้ว
ซึ่งไม่ได้ทำการพัฒนาต่อเลย
เนื่องจากไม่สามารถพัฒนาหรือเพิ่มความสามารถอะไรได้
ตลอดจนเรื่องประสิทธิภาพในการทำงาน
ดังนั้น แนะนำให้ไปใช้ Aggregation API แทน
ซึ่งมีความสามารถที่ดี มีประสิทธิภาพที่ดี และ ยืดหยุ่นมาก ๆ

จากการใช้งาน Elasticsearch มายังไม่เคยใช้งาน Facet เลย
ยกเว้นคนที่เคยชินกับการใช้ Facet จาก Apache Solr เท่านั้น

3. MVEL เป็น default scripting language

ทำการเปลี่ยนเป็นภาษา Groovy แทนแล้ว

4. Delete by query กลายเป็น plugin

สำหรับใครที่เขียน Query DSL สำหรับลบข้อมูล
ตอนนี้ทำไม่ได้แล้ว เนื่องจากได้ลบ feature ออกไปแล้ว
เนื่องจากเป็น feature ที่ส่งผลต่อการทำงาน
เช่น out of memory และ ทำให้ Elasticsearch พังได้

แต่ถ้าต้องการใช้ ก็สามารถใช้ได้
ด้วยการติดตั้ง plugin แทน

สรุปคือเปลี่ยนไปเป็น plugin แทนนะ

5. Multicast dicovery กลายเป็น plugin

Elastic search 2.x นั้นใช้ unicast เป็นค่า default
ส่วน multicast ถูกเอาออกไปเป็น plugin แทน
มีสาเหตุมาจาก

  • Linux ไม่อนุญาตให้ทำงานแบบ multicast บน localhost
  • บาง network ไม่อนุญาตการทำงานแบบ multicast

6. _Shutdown API ถูกเอาออกไป

7. Bulk API แบบ UDP เอาออกไปแล้ว

ดังนั้นไปใช้ Bulk API ปกตินะ

ดังนั้นก่อนจะย้ายไปใช้ Elasticsearch 2.x
ก็ควรจะตรวจสอบสิ่งที่ใช้งานก่อนว่าส่งผลกระทบอะไรหรือไม่ ?

Reference Websites
https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_20_removed_features.html