Bool Joint Query: måste, bör, must_not
Om vi vill begära något liknande "innehåll med BMW, men inte i tagg", måste vi använda bool federated query.
Den gemensamma sökningen kommer att använda tre nyckelord: måste, borde, must_not.
Dessa tre kan förstås på detta sätt
must: Dokumentet måste exakt matcha villkoren
should: bör ha mer än ett villkor, och om minst ett villkor uppfylls, kommer detta dokument att uppfylla should
must_not:Dokumentet får inte uppfylla kriterierna
Officiell introduktion på webbplatsen:https://www.elastic.co/guide/cn/ ... bining-filters.html
Sök i DSL
match_all Fråga
Alla dokument kan frågas, och det är standardsatsen utan frågevillkor.
Denna fråga används ofta för att slå ihop filter. Till exempel måste du hämta alla brevlådor, och all dokumentrelevans är densamma, så _score du får är 1.
Matchningsfråga
En matchningsfråga är en standardfråga som i princip används oavsett om du behöver en fulltextfråga eller en exakt fråga.
Om du använder match för att fråga ett fulltextfält, kommer analysatorn att använda för att tolka frågetecknen innan själva frågan:
Om du anger ett exakt värde under matchning kommer den att söka efter ditt givna värde när den stöter på ett tal, datum, boolean eller not_analyzed sträng:
Tips: När du gör en exakt matchningssökning är det bäst att använda filtersatser eftersom filtersatser cacklar data.
En matchningsfråga kan bara söka efter ett exakt värde som specificerar ett exakt fält, och allt du behöver göra är att ange rätt fältnamn för att undvika syntaxfel.
multi_match Fråga
multi_match fråga låter dig söka i flera fält samtidigt baserat på en matchningsfråga, och slå upp ett fält i flera fält samtidigt:
BOOL-fråga
Bool-frågor liknar bool-filtrering och används för att slå ihop flera frågeklausuler. Skillnaden är att bool-filtret direkt kan ange om matchningen är framgångsrik, medan bool-frågan beräknar _score (korrelationspoäng) för varje frågeklausul.
must:: 查询指定文档一定要被包含。 must_not:: Dokument som anges får inte inkluderas för att söka på den.
should:: 查询指定文档,有则可以为文档相关性加分。
Följande fråga visar att titelfältet innehåller "hur man tjänar miljoner" och att fältet "tagg" inte är markerat som skräppost. Om de är märkta som "stjärnmärkta" eller har ett releasedatum före 2014, kommer dessa matchande dokument att vara på en högre nivå än liknande webbplatser:
Tips: Om det inte finns någon must-klausul under bool-frågan, borde det finnas minst en should-klausul. Men om det finns en måste-klausul kan frågan också göras utan behovsklausulen.
Vildkortsfråga
Använd standard-skal-wildcard-frågor
Följande fråga matchar dokument som innehåller W1F 7HW och W2F 8HW:
Till exempel matchar följande fråga för värdnamn följande shell-wildcard:
regexp-fråga
Låt oss säga att du vill matcha endast postnummer som börjar på W följt av siffror. Genom att använda regexp-frågor kan du skriva mer komplexa mönster:
Detta reguljära uttryck anger att posten måste börja med W, följt av ett tal från 0 till 9, följt av en eller flera andra tecken.
Följande exempel är att alla reguljära starter med wxopen
Prefixfråga
Vilken karaktär börjar med kan du använda prefixet enklare, som i exemplet nedan:
Frasmatchning
När du behöver hitta några ord nära använder du match_phrase fråga:
Liknande matchningsfrågor tolkar match_phrase fråga först frågesträngen för att producera en lista med termer. Den kommer att söka efter alla poster, Dock sparas endast dokument som innehåller alla söktermer, och termernas positioner bör vara intilliggande. En fråga på frasen Quick Fox kommer inte att stämma överens någon av våra dokument, eftersom ingen dokumentation innehåller snabb- och boxposter intill varandra. match_phrase fråga kan också skrivas som en matchningsfråga med typfras:
|