Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

บันทึกการ migrate Elasticsearch 1.7 ไปยัง 5.X แบบผิว ๆ

$
0
0

ทำการบันทึกการ migrate ข้อมูลในระบบงานจาก Elasticsearch 1.7 ไปยัง 5.x ซึ่งพบว่ามีสิ่งต่าง ๆ ที่เปลี่ยนไปเยอะพอสมควรประกอบไปด้วย
  • เรื่องการ mapping ของ index ที่เปลี่ยนไปเยอะพอสมควร
  • ใน Elasticsearch 5.x ไม่มีชนิดข้อมูลที่เป็น string แล้วนะ
  • Query DSL หลาย ๆ ตัวถูกตัดทิ้งไปแล้วเช่น filterred เป็นต้น
  • Aggregate API ที่เปลี่ยนไปเช่น size=0 ในการดึงข้อมูลถูกเอาออกไป เนื่องจากมีปัญหาเรื่อง performance
  • การ configuration Elasticsearch ก่อนที่จะ deploy
มีรายละเอียดดังนี้

1. ชนิดข้อมูล String ไม่มีแล้วนะ

จะมีชนิดข้อมูล text เข้ามาแทน ซึ่งเป็น full-text search รวมทั้งจะทำสร้าง multi-field ชื่อว่า keyword มีชนิด keyword ให้แบบอัตโนมัติ มีหน้าที่แทนการกำหนด index=not_analyze สามารถเรียกใช้งาน keyword ได้ด้วย field_name.keyword โดยเราสามารถแก้ไขชื่อของ keyword ได้ [gist id="f5beb6a2700658f868beed6722d9fc02" file="mapping.txt"]

2. เปลี่ยน Query DSL จาก filtered query มาเป็น boolean query

เนื่องจาก filtered query ถูกเอาออกไปแล้ว [gist id="f5beb6a2700658f868beed6722d9fc02" file="filtered.txt"] สามารถแก้ไขได้ดังตัวอย่าง [gist id="f5beb6a2700658f868beed6722d9fc02" file="boolean.txt"]

3. ใน Aggregate API นั้นพบว่า size=0 นั้นถูกลบออกไป

เนื่องจากมีปัญหา Issue 18838 คือเรื่อง performance การทำงานนั่นเอง ใช้สำหรับกำหนดจำนวนข้อมูลในแต่ละ bucket ดังนั้นสิ่งที่ต้องทำก็คือ กำหนด size ไปเองที่มากกว่า 0 เท่านั้นเอง รวมทั้ง field ที่จะ aggregate ต้องกำหนดเป็น fielddata ด้วยนะ หรือเป็น field ที่เป็นตัวเลข หรือ keyword นั่นเอง ตัวอย่างเช่น [gist id="f5beb6a2700658f868beed6722d9fc02" file="aggs.txt"]

4. ในการ configuration ของ Elasticsearch server ก็เปลี่ยนเยอะพอสมควร

ใน Elasticsearch 5.2.2 นั้น จะแยกออกเป็นสอง mode คือ development และ production โดยค่า default จะเป็น development mode คือทำงานได้เฉพาะเครื่องหรือ localhost เท่านั้น ดังนั้นถ้าจะทำการ deploy ไปยัง production ตัวอย่างเช่น [code] network.host: ip discovery.zen.ping.unicast.hosts: ["host1", "host2"] [/code] ส่วนค่า default ของ ES HEAP คือ 2 GB นะครับ ซึ่งแนะนำให้เปลี่ยนนะครับสัก 4-8 GB เป็นค่าเริ่มต้น ที่สำคัญใน Elasticsearch ยังแนะนำ checklist ต่าง ๆ ในการ configuration สุดท้ายอย่าลืมทดสอบให้มากนะครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles