ข้อความค้นหาพื้นฐานใน Elasticsearch: คู่มือฉบับสมบูรณ์

ข้อความค้นหาตามคำหลัก(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 คุณสามารถรวมคำค้นหาเหล่านี้เพื่อค้นหาข้อมูลได้อย่างยืดหยุ่นและมีประสิทธิภาพ