Grundläggande sökfrågor i Elasticsearch: En omfattande guide

Sökordsbaserad fråga(Match Query)

Matchningsfrågan används för att söka efter dokument som innehåller specifika nyckelord. Det kommer att returnera dokument som har minst ett motsvarande nyckelord.

Exempel: Hitta produkter med namnet som innehåller nyckelordet laptop  i products Index.

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

 

Måste innehålla alla nyckelord(Match Phrase Query)

Frågan Matcha fras kräver att alla nyckelord i frågan visas i följd och i rätt ordning i dokumenttexten.

Exempel: Hitta produkter med beskrivningen som innehåller frasen HP laptop.

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

 

Måste innehålla hela frasprefixet(Match Phrase Prefix Query)

Frågan Matcha frasprefix liknar Matcha fras, men den tillåter en partiell matchning av det sista sökordet.

Exempel: Hitta produkter med beskrivningen som börjar med laptop.

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

 

Termbaserad fråga(Termfråga)

Term-frågan används för att söka efter dokument med ett fält som har ett exakt värde som specificerats.

Exempel: Hitta produkter med category fältet som har värdet laptop.

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

 

Områdesbaserad fråga(Range Query)

Områdesfrågan hjälper till att söka efter dokument med ett fältvärde inom ett angivet intervall.

Exempel: Hitta produkter med priser mellan 500 och 1000.

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

 

Term Level Query

Term Level-frågor tillåter sökning efter dokument baserat på specifika villkor som Exakt, Prefix, Range, Wildcard och Fuzzy-frågor.

Exempel: Hitta produkter med namn som börjar med laptop och priser mellan 500 och 1000.

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

 

Full-Text Fråga

Full-Text frågor tillåter sökning i textfält med hjälp av textanalysalgoritmer för att hitta liknande ord eller synonymer.

Exempel: Hitta produkter med beskrivningar som innehåller antingen computer  eller laptop.

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

 

Boolean fråga

Boolean sökningar gör det möjligt att kombinera flera underfrågor med olika sökvillkor, som måste innehålla alla, måste innehålla minst en, eller får inte innehålla, för att få exakta sökresultat.

Exempel: Hitta produkter med category vara laptop  och priser mellan 500 och 1000.

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

 

Det här är de grundläggande sökfrågorna i Elasticsearch, tillsammans med illustrerade exempel för varje frågetyp. När du använder Elasticsearch kan du kombinera dessa frågor för att söka efter data flexibelt och effektivt.