มีโอกาสไปแบ่งปันความรู้เรื่อง Elasticsearch ในงาน Elastic Tech Community Exchange
ซึ่งจัดโดยทีมจาก Elastic นั่นเอง เป็นการกลับมาจัด meetup อีกครั้ง
โดยครั้งนี้มีหาร update ข้อมูลต่าง ๆ เพียบเลย เช่น

  • ความสามารถใหม่ ๆ ใน Elastic stack และ product
  • การนำ elastic stack ไปใช้งานใน use case ต่าง ๆ ทั้ง search, monitoring หรือ observability และ AI/ML เป็นต้น

ส่วนผมได้ไป share หัวข้อเกี่ยวกับ search ใน Elasticsearch นั่นเอง
มีรายละเอียดคร่าว ๆ ดังนี้

พอมองย้อนกลับไปพบว่า ใช้งาน Elasticseach มาตั้งแต่ version 0.9 กันเลยทีเดียว
โดย product ตัวนี้ก็มีการปรับเปลี่ยนมาตลอดเวลา

หัวข้อที่ผมทำการแบ่งปันไปคือ Search หรือการค้นหาด้วย Elasticserch นั่นเอง

น่าจะเป็นอีกเรื่องที่หลัง ๆ มาจะไม่ค่อยได้ share มากนัก
หรือหลาย ๆ ที่จะนำไปใช้กับการพวก observability มากกว่า
โดยการใช้งาน Elastic agent, beats และ logstash เช่น

  • Log
  • Trace
  • Metric

ความสามารถในการค้นหาใน Elasticsearch 9 มีดังนี้

  • Keyword หรือ lexical search
  • Semantic search
  • Hybrid search = Keyword + Semantic search

Keyword หรือ lexical search

คือการค้นหาจากการตัดคำ หรือ analyzer/tokenizer แล้วจะการผ่าน indexing
เป็นแนวทางปกติ ของการค้นหาข้อมูลใน Elasticsearch

Semantic search

เป็นการค้นหาข้อมูลที่ใช้ความหมาย หรือ context มากกว่า
และค้นหาแบบ multi-language ได้


โดยใช้ technique ต่าง ๆ ในการสร้างขึ้นมา เช่น

  • Natural Language Processing (NLP)
  • Machine Learning model โดยสามารถใช้งานผ่าน semantic_text type ที่มีให้ กับ ML model inference ที่ใช้ได้ใน Elasticsearch enterprise version เท่านั้น แต่ลองใช้ trail version ได้เช่นกัน จะทำการแปลงเป็น vector หรือ embedding ให้เองผ่าน ML model ที่สร้างขึ้นมา
  • Vector type โดยใน Elasticsearch สามารถจัดเก็บข้อมูลในรูปแบบของ vector จึงสามารถทำงานร่วมกับ embedding model ต่าง ๆ ได้อีกด้วย

Hybrid search = Keyword + Semantic search

เป็นการปรับปรุงการค้นหาให้ถูกต้อง และ ถูกใจมากยิ่งขึ้น
โดย Elasticsearch ก็สนับสนุนการค้นหาเช่นนี้เช่นเดียวกัน
ตัวอย่างการ query ข้อมูล ทั้ง keyword และ semantic search ดังนี้

ลองศึกษาและใช้งานกันดูครับ

เอกสารในการแบ่งปันมีดังนี้