ข้อความค้นหาตามคำหลัก(Match Query)
การค้นหาที่ตรงกันใช้เพื่อค้นหาเอกสารที่มีคำหลักเฉพาะ มันจะส่งคืนเอกสารที่มีคำหลักที่เกี่ยวข้องอย่างน้อยหนึ่งคำ
ตัวอย่าง: ค้นหาผลิตภัณฑ์ที่มีชื่อที่มี คีย์เวิร์ด laptop
ใน products Index
GET /products/_search
{
"query": {
"match": {
"name": "laptop"
}
}
}
ต้องมีคำหลักทั้งหมด(Match Phrase Query)
ข้อความค้นหา Match Phrase ต้องการให้คำหลักทั้งหมดในข้อความค้นหาปรากฏขึ้นตามลำดับที่ถูกต้องภายในข้อความของเอกสาร
HP laptop
ตัวอย่าง: ค้นหาผลิตภัณฑ์ที่มี คำ อธิบายที่มีวลี
GET /products/_search
{
"query": {
"match_phrase": {
"description": "HP laptop"
}
}
}
ต้องมีคำนำหน้าทั้งวลี(Match Phrase Prefix Query)
ข้อความค้นหา Match Phrase Prefix คล้ายกับ Match Phrase แต่อนุญาตให้จับคู่บางส่วนของคำหลักสุดท้ายได้
ตัวอย่าง: ค้นหาสินค้าที่มีคำอธิบายขึ้นต้น laptop
ด้วย
GET /products/_search
{
"query": {
"match_phrase_prefix": {
"description": "laptop"
}
}
}
แบบสอบถามตามคำศัพท์(Term Query)
แบบสอบถาม Term ใช้เพื่อค้นหาเอกสารที่มีเขตข้อมูลที่มีค่าตรงตามที่ระบุ
ตัวอย่าง: ค้นหาผลิตภัณฑ์ที่มี ฟิลด์ category
ที่มีค่า laptop
GET /products/_search
{
"query": {
"term": {
"category": "laptop"
}
}
}
แบบสอบถามตามช่วง(Range Query)
แบบสอบถามช่วงช่วยค้นหาเอกสารที่มีค่าเขตข้อมูลภายในช่วงที่ระบุ
ตัวอย่าง: ค้นหาผลิตภัณฑ์ที่มีราคาระหว่าง 500 ถึง 1,000
GET /products/_search
{
"query": {
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
}
แบบสอบถามระดับเทอม
ข้อความค้นหาระดับคำอนุญาตให้ค้นหาเอกสารตามเงื่อนไขเฉพาะ เช่น ข้อความค้นหาแบบตรงทั้งหมด คำนำหน้า ช่วง สัญลักษณ์แทน และข้อความค้นหาแบบคลุมเครือ
ตัวอย่าง: ค้นหาผลิตภัณฑ์ที่มีชื่อขึ้นต้นด้วย laptop
และราคาระหว่าง 500 ถึง 1,000
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"prefix": {
"name": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
Full-Text สอบถาม
Full-Text ข้อความค้นหาอนุญาตให้ค้นหาช่องข้อความโดยใช้อัลกอริทึมการวิเคราะห์ข้อความเพื่อค้นหาคำหรือคำพ้องความหมายที่คล้ายกัน
ตัวอย่าง: ค้นหาผลิตภัณฑ์ที่มีคำอธิบายอย่างใดอย่าง หนึ่ง computer
หรือ laptop
GET /products/_search
{
"query": {
"match": {
"description": "computer laptop"
}
}
}
แบบสอบถามบูลีน
Boolean
ข้อความค้นหาอนุญาตให้รวมข้อความค้นหาย่อยหลายรายการเข้ากับเงื่อนไขการค้นหาที่หลากหลาย เช่น ต้องมีทั้งหมด ต้องมีอย่างน้อยหนึ่งรายการ หรือต้องไม่มี เพื่อให้ได้ผลลัพธ์การค้นหาที่แม่นยำ
ตัวอย่าง: ค้นหาผลิตภัณฑ์ที่ category
มีตัวตน laptop
และราคาระหว่าง 500 ถึง 1,000
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"category": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
นี่คือข้อความค้นหาพื้นฐานใน Elasticsearch พร้อมตัวอย่างที่แสดงสำหรับข้อความค้นหาแต่ละประเภท เมื่อใช้ Elasticsearch คุณสามารถรวมคำค้นหาเหล่านี้เพื่อค้นหาข้อมูลได้อย่างยืดหยุ่นและมีประสิทธิภาพ