Dotaz založený na klíčových slovech(Match Query)
Dotaz na shodu se používá k vyhledávání dokumentů obsahujících konkrétní klíčová slova. Vrátí dokumenty, které mají alespoň jedno odpovídající klíčové slovo.
Příklad: Najděte produkty s názvem obsahujícím klíčové slovo laptop
v products Index
.
GET /products/_search
{
"query": {
"match": {
"name": "laptop"
}
}
}
Musí obsahovat všechna klíčová slova(Match Phrase Query)
Dotaz na shodu fráze vyžaduje, aby se všechna klíčová slova v dotazu objevila po sobě a ve správném pořadí v textu dokumentu.
Příklad: Najděte produkty s popisem obsahujícím frázi HP laptop
.
GET /products/_search
{
"query": {
"match_phrase": {
"description": "HP laptop"
}
}
}
Musí obsahovat celou předponu fráze(Match Phrase Prefix Query)
Dotaz na předponu fráze shody je podobný dotazu na frázi shody, ale umožňuje částečnou shodu posledního klíčového slova.
Příklad: Najděte produkty s popisem začínajícím na laptop
.
GET /products/_search
{
"query": {
"match_phrase_prefix": {
"description": "laptop"
}
}
}
Dotaz na základě termínu(Dotaz na termín)
Dotaz na termín se používá k vyhledávání dokumentů s polem s přesnou hodnotou, jak je uvedeno.
Příklad: Najděte produkty s category
polem s hodnotou laptop
.
GET /products/_search
{
"query": {
"term": {
"category": "laptop"
}
}
}
Dotaz založený na rozsahu(Range Query)
Dotaz na rozsah pomáhá hledat dokumenty s hodnotou pole v určeném rozsahu.
Příklad: Najděte produkty s cenami mezi 500 a 1000.
GET /products/_search
{
"query": {
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
}
Dotaz na úrovni termínu
Dotazy na úrovni termínu umožňují vyhledávat dokumenty na základě specifických podmínek, jako jsou přesné dotazy, prefixy, rozsahy, zástupné znaky a fuzzy dotazy.
Příklad: Najděte produkty s názvem začínajícím na laptop
a cenami mezi 500 a 1000.
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"prefix": {
"name": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
Full-Text Dotaz
Full-Text dotazy umožňují prohledávat textová pole pomocí algoritmů pro analýzu textu k nalezení podobných slov nebo synonym.
Příklad: Najděte produkty s popisy obsahujícími buď computer
nebo laptop
.
GET /products/_search
{
"query": {
"match": {
"description": "computer laptop"
}
}
}
Booleovský dotaz
Boolean
dotazy umožňují kombinovat více dílčích dotazů s různými podmínkami vyhledávání, jako musí obsahovat všechny, musí obsahovat alespoň jeden nebo nesmí obsahovat, aby bylo dosaženo přesných výsledků vyhledávání.
Příklad: Najděte produkty s category
bytím laptop
a cenami mezi 500 a 1000.
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"category": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
Toto jsou základní vyhledávací dotazy v Elasticsearch, spolu s ilustrovanými příklady pro každý typ dotazu. Při použití Elasticsearch, můžete tyto dotazy kombinovat a vyhledávat data flexibilně a efektivně.