Osnovne iskalne poizvedbe v Elasticsearch: Izčrpen vodnik

Poizvedba na podlagi ključnih besed(Match Query)

Poizvedba za ujemanje se uporablja za iskanje dokumentov, ki vsebujejo določene ključne besede. Vrnil bo dokumente, ki imajo vsaj eno ustrezno ključno besedo.

Primer: poiščite izdelke z imenom, ki vsebuje ključno besedo laptop  v products Index.

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

 

Vsebovati mora vse ključne besede(Match Phrase Query)

Poizvedba Match Phrase zahteva, da se vse ključne besede v poizvedbi pojavijo zaporedno in v pravilnem vrstnem redu v besedilu dokumenta.

Primer: poiščite izdelke z opisom, ki vsebuje frazo HP laptop.

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

 

Vsebovati mora predpono celotne fraze(Match Phrase Prefix Query)

Poizvedba Match Phrase Prefix je podobna Match Phrase, vendar omogoča delno ujemanje zadnje ključne besede.

Primer: poiščite izdelke, katerih opis se začne z laptop.

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

 

Poizvedba na podlagi izraza(poizvedba izraza)

Poizvedba Izraz se uporablja za iskanje dokumentov s poljem, ki ima točno določeno vrednost.

Primer: poiščite izdelke s category poljem z vrednostjo laptop.

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

 

Poizvedba na podlagi obsega(Range Query)

Poizvedba Range pomaga iskati dokumente z vrednostjo polja v določenem obsegu.

Primer: poiščite izdelke s cenami med 500 in 1000.

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

 

Poizvedba na ravni termina

Poizvedbe na ravni izrazov omogočajo iskanje dokumentov na podlagi posebnih pogojev, kot so poizvedbe Exact, Prefix, Range, Wildcard in Fuzzy poizvedbe.

Primer: poiščite izdelke z imenom, ki se začne z laptop in cenami med 500 in 1000.

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

 

Full-Text Poizvedba

Full-Text poizvedbe omogočajo iskanje po besedilnih poljih z uporabo algoritmov za analizo besedila za iskanje podobnih besed ali sinonimov.

Primer: poiščite izdelke z opisi, ki vsebujejo bodisi computer  ali laptop.

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

 

Logična poizvedba

Boolean poizvedbe omogočajo združevanje več podpoizvedb z različnimi pogoji iskanja, na primer mora vsebovati vse, mora vsebovati vsaj eno ali ne sme vsebovati, da bi dosegli natančne rezultate iskanja.

Primer: poiščite izdelke z category bitjem laptop  in cenami med 500 in 1000.

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

 

To so osnovne iskalne poizvedbe v Elasticsearch, skupaj z ilustriranimi primeri za vsako vrsto poizvedbe. Ko uporabljate Elasticsearch, lahko kombinirate te poizvedbe za prilagodljivo in učinkovito iskanje podatkov.