Elasticsearch en systemen voor zoeken in volledige tekst · Les

Queries combineren met Bool

Verken de `bool`-query om meerdere queries te combineren met `must`-, `should`-, `must_not`- en `filter`-clausules voor complexe logica.

Les 3 van 412 stappen

Queries combineren met Bool is een gratis Elasticsearch en systemen voor zoeken in volledige tekst-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Elasticsearch en systemen voor zoeken in volledige tekst. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Elasticsearch en systemen voor zoeken in volledige tekst bevat in totaal 4 lessen.

Zoeklogica combineren

Welkom bij het combineren van zoekopdrachten! Tot nu toe hebben we afzonderlijke zoekvoorwaarden bekeken. In de praktijk zijn voor zoekopdrachten vaak meerdere criteria nodig.

De bool-zoekopdracht van Elasticsearch is de aangewezen keuze voor het opbouwen van complexe zoeklogica. Je kunt er meerdere zoekopdrachten mee combineren met AND-, OR- en NOT-voorwaarden.

De opbouw van een bool-zoekopdracht

Een bool-zoekopdracht werkt als een container voor andere zoekopdrachten. Deze heeft vier hoofdcomponenten:

  • must: Alle zoekopdrachten hierin moeten overeenkomen (AND).
  • should: Ten minste één zoekopdracht hierin moet overeenkomen (OR).
  • must_not: De zoekopdrachten hierin mogen NIET overeenkomen (NOT).
  • filter: De zoekopdrachten hierin moeten overeenkomen, maar beïnvloeden de relevantiescore niet.

We bekijken ze allemaal!

`must`: aan alle voorwaarden moet worden voldaan

De must-component werkt als een operator "AND". Alle zoekopdrachten die in must staan, moeten waar zijn voordat een document als overeenkomst wordt beschouwd.

Documenten die aan alle must-componenten voldoen, dragen positief bij aan de relevantiescore.

Voorbeeld: de component `must`

Deze zoekopdracht vindt producten die zowel "laptop" ALS "gaming" bevatten.

{
  "query": {
    "bool": {
      "must": [
        { "match": { "category": "laptop" } },
        { "match": { "tags": "gaming" } }
      ]
    }
  }
}

`should`: ten minste één voorwaarde

De should-component werkt als een operator "OR". Als een document overeenkomt met een van de zoekopdrachten in should, wordt het als een mogelijke overeenkomst beschouwd.

Hoe meer should-zoekopdrachten met een document overeenkomen, hoe hoger de relevantiescore meestal is.

Standaard moet, als er geen must-componenten zijn, ten minste één should-component overeenkomen voordat een document wordt geretourneerd.

Voorbeeld: de component `should`

Deze zoekopdracht vindt producten die óf "laptop" ÓF "tablet" bevatten.

{
  "query": {
    "bool": {
      "should": [
        { "match": { "category": "laptop" } },
        { "match": { "category": "tablet" } }
      ]
    }
  }
}

`must_not`: documenten uitsluiten

De must_not-component werkt als een operator "NOT". Documenten die overeenkomen met een zoekopdracht in must_not, worden uit de resultaten verwijderd.

Zoekopdrachten in must_not dragen niet bij aan de relevantiescore.

Voorbeeld: de component `must_not`

Deze zoekopdracht vindt alle producten BEHALVE producten in de categorie "refurbished".

{
  "query": {
    "bool": {
      "must_not": [
        { "match": { "category": "refurbished" } }
      ]
    }
  }
}

`filter`: snelle AND zonder score

De filter-component lijkt op must, omdat alle zoekopdrachten erin moeten overeenkomen. Er is echter een belangrijk verschil:

  • Geen score: Filterzoekopdrachten beïnvloeden de relevantiescore van documenten niet.
  • Caching: Filterzoekopdrachten worden vaak in de cache opgeslagen, waardoor ze zeer snel zijn voor veelgebruikte criteria.

Gebruik filter voor voorwaarden met een "ja/nee"-uitkomst, wanneer je documenten alleen wilt opnemen of uitsluiten zonder hun rangschikking te beïnvloeden.

Geavanceerd: meerdere componenten

Je kunt al deze componenten binnen één bool-zoekopdracht combineren om krachtige, nauwkeurige zoekopdrachten te bouwen. Dit voorbeeld vindt:

  • Producten met "laptop" in de naam (must)
  • DIE óf "gaming" ÓF "ultrabook" zijn (should)
  • MAAR NIET "refurbished" zijn (must_not)
  • EN een status van "available" hebben (filter)
{
  "query": {
    "bool": {
      "must": { "match": { "name": "laptop" } },
      "should": [
        { "match": { "tags": "gaming" } },
        { "match": { "tags": "ultrabook" } }
      ],
      "must_not": { "term": { "condition": "refurbished" } },
      "filter": { "term": { "status.keyword": "available" } }
    }
  }
}

Complexe zoeklogica

Bekijk een bool-zoekopdracht die bedoeld is om artikelen te vinden:

  • Over "Elasticsearch" (must)
  • Gepubliceerd in "2023" OF "2024" (should)
  • Maar NIET geschreven door "John Doe" (must_not)

Welke van de volgende uitspraken over het gedrag van deze zoekopdracht is JUIST?

Samenvatting: de kracht van bool-zoekopdrachten

Goed gedaan! Je hebt geleerd hoe je eenvoudige zoekopdrachten kunt combineren tot krachtige, complexe zoeklogica met de bool-zoekopdracht van Elasticsearch.

  • must: Aan alle voorwaarden moet worden voldaan (AND).
  • should: Aan ten minste één voorwaarde moet worden voldaan (OR).
  • must_not: Documenten mogen NIET aan deze voorwaarden voldoen (NOT).
  • filter: Aan de voorwaarden moet worden voldaan, maar ze beïnvloeden de relevantie niet (snel en gecachet).

Inzicht in bool-zoekopdrachten is cruciaal voor het bouwen van nauwkeurige en effectieve zoektoepassingen!

Gratis beginnen

Leer Elasticsearch en systemen voor zoeken in volledige tekst met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Queries combineren met Bool” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Elasticsearch en systemen voor zoeken in volledige tekst, waaronder “Queries combineren met Bool”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Elasticsearch en systemen voor zoeken in volledige tekst bevat in totaal 4 lessen.

Wat leer ik in “Queries combineren met Bool”?

Verken de `bool`-query om meerdere queries te combineren met `must`-, `should`-, `must_not`- en `filter`-clausules voor complexe logica. Je oefent met Elasticsearch en systemen voor zoeken in volledige tekst door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Elasticsearch en systemen voor zoeken in volledige tekst te beginnen?

Ervaring vooraf is niet nodig. Elasticsearch en systemen voor zoeken in volledige tekst op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Queries combineren met Bool”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Elasticsearch en systemen voor zoeken in volledige tekst?

Ja. Elke les over Elasticsearch en systemen voor zoeken in volledige tekst bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Inleiding tot Query DSL
  2. Term- en match-queries
  3. Queries combineren met Bool
  4. Filtering, bereiken en querycontext
← Terug naar Elasticsearch en systemen voor zoeken in volledige tekst