Bool Joint spørgsmål: Skal, skal, must_not
Hvis vi vil anmode om noget lignende "indhold med BMW, men ikke i tag", skal vi bruge bool federated query.
Den fælles forespørgsel vil bruge tre nøgleord: must, should, must_not.
Disse tre kan forstås på denne måde
must: Dokumentet skal nøjagtigt matche betingelserne
should: bør have mere end én betingelse, og hvis mindst én betingelse er opfyldt, vil dette dokument opfylde should
must_not:Dokumentet må ikke opfylde kriterierne
Officiel hjemmesideintroduktion:https://www.elastic.co/guide/cn/ ... bining-filters.html
Forespørg DSL
match_all Forespørgsel
Alle dokumenter kan forespørges, og det er standardsætningen uden forespørgselsbetingelser.
Denne forespørgsel bruges ofte til at sammenflette filtre. For eksempel skal du hente alle postkasser, og al dokumentrelevans er den samme, så det _score du får, er 1.
Matchforespørgsel
En match-forespørgsel er en standardforespørgsel, der grundlæggende bruges, uanset om du har brug for en fuldtekstforespørgsel eller en præcis forespørgsel.
Hvis du bruger match til at forespørge et fuldtekstfelt, vil den bruge analysatoren til at parse forespørgselstegnene før den egentlige forespørgsel:
Hvis du angiver en præcis værdi under match, vil den søge efter din givne værdi, når den støder på et tal, en dato, en boolesk eller not_analyzed streng:
Tip: Når du laver en søgning med præcis match, er det bedst at bruge filter-sætninger, fordi filter-udsagn cacher data.
En matchforespørgsel kan kun søge efter en eksakt værdi, der angiver et præcist felt, og alt du skal gøre er at angive det korrekte feltnavn for den for at undgå syntaksfejl.
multi_match Forespørgsel
multi_match forespørgsel giver dig mulighed for at søge i flere felter samtidig baseret på en matchforespørgsel og slå et felt op i flere felter på samme tid:
BOOL-forespørgsel
Bool-forespørgsler ligner bool-filtrering og bruges til at sammenflette flere forespørgselsklausuler. Forskellen er, at bool-filteret direkte kan angive, om matchet er succesfuldt, mens bool-forespørgslen beregner _score (korrelationsscore) for hver forespørgselsklausul.
must:: 查询指定文档一定要被包含。 must_not:: Forespørgselsspecifikke dokumenter må ikke inkluderes.
should:: 查询指定文档,有则可以为文档相关性加分。
Den følgende forespørgsel vil vise, at titelfeltet indeholder "hvordan man tjener millioner", og at "tag"-feltet ikke er markeret som spam. Hvis de er mærket som "stjernet" eller har en udgivelsesdato før 2014, vil disse matchende dokumenter være på et højere niveau end lignende sider:
Tip: Hvis der ikke er nogen must-klausul under bool-forespørgslen, bør der være mindst én should-klausul. Men hvis der findes en must-klausul, kan forespørgslen også foretages uden behovsklausulen.
Wildcards-forespørgsel
Brug standard shell wildcard-forespørgsler
Følgende forespørgsel matcher dokumenter, der indeholder W1F 7HW og W2F 8HW:
For eksempel matcher følgende forespørgsel for værtsnavn følgende shell-wildcard:
RegExp-forespørgsel
Lad os sige, at du kun vil matche postnumre, der starter med W efterfulgt af tal. Ved at bruge regexp-forespørgsler kan du skrive mere komplekse mønstre:
Dette regulære udtryk angiver, at posten skal starte med W, efterfulgt af et tal fra 0 til 9, efterfulgt af et eller flere andre tegn.
Følgende eksempel er, at alle regulære starter med wxopen
Præfiksforespørgsel
Hvilket tegn starter det med, kan du bruge præfikset mere enkelt, som i eksemplet nedenfor:
Sætningsmatchning
Når du skal finde et par ord tæt på hinanden, bruger du match_phrase forespørgsel:
Ligesom match-forespørgsler parser match_phrase forespørgsel først forespørgselsstrengen for at producere en liste over termer. Den vil søge efter alle indgangene, Dog opbevares kun dokumenter, der indeholder alle søgetermer, og placeringerne af termerne bør være tilstødende. En forespørgsel på udtrykket Quick Fox vil ikke matche Ingen af vores dokumentation, da ingen dokumentation indeholder hurtige og boks-poster ved siden af hinanden. match_phrase forespørgsel kan også skrives som en matchforespørgsel af typefrasen:
|