Pagrindinės paieškos užklausos Elasticsearch: Išsamus vadovas

Raktinių žodžių užklausa(Match Query)

Atitikties užklausa naudojama ieškant dokumentų, kuriuose yra tam tikrų raktinių žodžių. Jis grąžins dokumentus, turinčius bent vieną atitinkamą raktinį žodį.

Pavyzdys: raskite produktus, kurių pavadinime yra raktinis laptop  žodis products Index.

GET /products/_search  
{  
  "query": {  
    "match": {  
      "name": "laptop"  
    }  
  }  
}  

 

Turi būti visi raktiniai žodžiai(Match Phrase Query)

Frazės atitikties užklausa reikalauja, kad visi raktiniai žodžiai užklausoje būtų rodomi iš eilės ir teisinga tvarka dokumento tekste.

Pavyzdys: raskite produktus, kurių aprašyme yra frazė HP laptop.

GET /products/_search  
{  
  "query": {  
    "match_phrase": {  
      "description": "HP laptop"  
    }  
  }  
}  

 

Turi būti visas frazės priešdėlis(Match Phrase Prefix Query)

Frazės priešdėlio užklausa yra panaši į Frazės atitikties užklausą, tačiau leidžia iš dalies atitikti paskutinio raktinio žodžio atitiktį.

Pavyzdys: raskite produktus, kurių aprašymas prasideda laptop.

GET /products/_search  
{  
  "query": {  
    "match_phrase_prefix": {  
      "description": "laptop"  
    }  
  }  
}  

 

Terminais pagrįsta užklausa(termino užklausa)

Termino užklausa naudojama ieškant dokumentų, kurių laukas turi tikslią nurodytą reikšmę.

Pavyzdys: raskite produktus, kurių category laukas turi reikšmę laptop.

GET /products/_search  
{  
  "query": {  
    "term": {  
      "category": "laptop"  
    }  
  }  
}  

 

Diapazonu pagrįsta užklausa(Range Query)

Diapazono užklausa padeda ieškoti dokumentų, kurių lauko reikšmė yra nurodytame diapazone.

Pavyzdys: raskite produktų, kurių kainos yra nuo 500 iki 1000.

GET /products/_search  
{  
  "query": {  
    "range": {  
      "price": {  
        "gte": 500,  
        "lte": 1000  
      }  
    }  
  }  
}  

 

Termino lygio užklausa

Termino lygio užklausos leidžia ieškoti dokumentų pagal konkrečias sąlygas, pvz., tikslias, priešdėlis, diapazonas, pakaitos simbolius ir neaiškios užklausos.

Pavyzdys: raskite produktų, kurių pavadinimas prasideda laptop nuo 500 iki 1000 kainos.

GET /products/_search  
{  
  "query": {  
    "bool": {  
      "must": [  
        {  
          "prefix": {  
            "name": "laptop"  
          }  
        },  
        {  
          "range": {  
            "price": {  
              "gte": 500,  
              "lte": 1000  
            }  
          }  
        }  
      ]  
    }  
  }  
}  

 

Full-Text Užklausa

Full-Text užklausos leidžia ieškoti teksto laukuose naudojant teksto analizės algoritmus, kad būtų galima rasti panašių žodžių ar sinonimų.

Pavyzdys: raskite produktus, kurių aprašymuose yra computer  arba laptop.

GET /products/_search  
{  
  "query": {  
    "match": {  
      "description": "computer laptop"  
    }  
  }  
}  

 

Būlio užklausa

Boolean užklausos leidžia derinti kelias papildomas užklausas su įvairiomis paieškos sąlygomis, pvz., turi būti visos, turi būti bent viena arba neturi būti, kad būtų pasiekti tikslūs paieškos rezultatai.

Pavyzdys: raskite produktų, kurių category esmė laptop  ir kainos yra nuo 500 iki 1000.

GET /products/_search  
{  
  "query": {  
    "bool": {  
      "must": [  
        {  
          "term": {  
            "category": "laptop"  
          }  
        },  
        {  
          "range": {  
            "price": {  
              "gte": 500,  
              "lte": 1000  
            }  
          }  
        }  
      ]  
    }  
  }  
}  

 

Tai yra pagrindinės paieškos užklausos Elasticsearch kartu su iliustruotais kiekvieno užklausos tipo pavyzdžiais. Naudodami Elasticsearch, galite derinti šias užklausas, kad lanksčiai ir efektyviai ieškotumėte duomenų.