Bool felles spørsmål: må, burde, must_not
Hvis vi vil be om noe lignende som «innhold med BMW, men ikke i tag», må vi bruke bool federated query.
Den felles forespørselen vil bruke tre nøkkelord: må, bør, must_not.
Disse tre kan forstås på denne måten
must: Dokumentet må samsvare nøyaktig med betingelsene
should: bør ha mer enn én betingelse, og hvis minst én betingelse er oppfylt, vil dette dokumentet oppfylle should
must_not:Dokumentet må ikke oppfylle kriteriene
Offisiell nettsideintroduksjon:https://www.elastic.co/guide/cn/ ... bining-filters.html
Søk DSL
match_all Spørring
Alle dokumenter kan forespørres, og det er standardsetningen uten spørringsbetingelser.
Denne spørringen brukes ofte til å slå sammen filtre. For eksempel må du hente alle postbokser, og all dokumentrelevans er den samme, så _score du får er 1.
Match-spørring
En match-spørring er en standardspørring som i hovedsak brukes enten du trenger en fulltekst-spørring eller en eksakt spørring.
Hvis du bruker match for å spørre i et fulltekstfelt, vil den bruke analysatoren til å analysere spørringstegnene før selve spørringen:
Hvis du spesifiserer en eksakt verdi under match, vil den søke etter din gitte verdi når den støter på et tall, en dato, en boolsk eller not_analyzed streng:
Tips: Når du gjør et eksakt match-søk, er det best å bruke filtersetninger fordi filtersetninger cacher data.
En match-spørring kan bare søke etter en eksakt verdi som spesifiserer et eksakt felt, og alt du trenger å gjøre er å angi riktig feltnavn for å unngå syntaksfeil.
multi_match Spørring
multi_match spørring lar deg søke i flere felt samtidig basert på en match-spørring, og slå opp ett felt i flere felt samtidig:
Bool-spørring
Bool-spørringer ligner på bool-filtrering og brukes til å slå sammen flere spørringsklausuler. Forskjellen er at bool-filteret direkte kan vise om matchen er vellykket, mens bool-spørringen beregner _score (korrelasjonsscore) for hver spørringsklausul.
must:: 查询指定文档一定要被包含。 must_not:: Spesifiserte spørringsdokumenter må ikke inkluderes.
should:: 查询指定文档,有则可以为文档相关性加分。
Følgende spørring vil finne at tittelfeltet inneholder "hvordan tjene millioner" og at "tag"-feltet ikke er merket som spam. Hvis de er merket som "stjernet" eller har en utgivelsesdato før 2014, vil disse samsvarende dokumentene være på et høyere nivå enn lignende nettsteder:
Tips: Hvis det ikke finnes noen must-klausul under bool-forespørselen, bør det være minst én should-klausul. Men hvis det finnes en must-klausul, kan spørringen også gjøres uten behovsklausulen.
Wildcards-spørring
Bruk standard shell wildcard-spørringer
Følgende spørring matcher dokumenter som inneholder W1F 7HW og W2F 8HW:
For eksempel matcher følgende søk for vertsnavn følgende shell-wildcard:
regexp-spørring
La oss si at du vil matche kun postnumre som starter med W etterfulgt av tall. Ved å bruke regexp-spørringer kan du skrive mer komplekse mønstre:
Dette regulære uttrykket spesifiserer at oppføringen må starte med W, etterfulgt av et tall fra 0 til 9, etterfulgt av ett eller flere andre tegn.
Følgende eksempel er at alle regulære starter med wxopen
Prefiksspørring
Hvilket tegn starter det med, kan du bruke prefikset enklere, som i eksempelet nedenfor:
Frasematching
Når du trenger å finne noen ord i nærheten, bruker du match_phrase spørring:
På samme måte som match-spørringer, parser match_phrase spørring først spørringsstrengen for å lage en liste med termer. Den vil søke etter alle oppføringene, Imidlertid oppbevares kun dokumenter som inneholder alle søkeord, og posisjonene til begrepene bør ligge ved siden av hverandre. Et søk på uttrykket Quick Fox vil ikke matche noe av dokumentasjonen vår, siden ingen dokumentasjon inneholder hurtig- og boksoppføringer ved siden av hverandre. match_phrase spørring kan også skrives som en match-spørring med typefrase:
|