Întrebare BOOL Joint: Trebuie, ar trebui must_not
Dacă vrem să solicităm ceva similar cu "conținut cu BMW, dar nu în tag", trebuie să folosim bool federated query.
Interogarea comună va folosi trei cuvinte-cheie: must, should must_not.
Aceste trei pot fi înțelese astfel
must: Documentul trebuie să corespundă exact condițiilor
should: ar trebui să aibă mai multe condiții, iar dacă cel puțin o condiție este îndeplinită, acest document va îndeplini dacă
must_not:Documentul nu trebuie să corespundă criteriilor
Introducere pe site-ul oficial:https://www.elastic.co/guide/cn/ ... bining-filters.html
Interogare DSL
match_all Interogare
Toate documentele pot fi interogate și este instrucțiunea implicită fără condiții de interogare.
Această interogare este adesea folosită pentru a fuziona filtrele. De exemplu, trebuie să recuperezi toate cutiile poștale, iar relevanța tuturor documentelor este aceeași, deci _score primești este 1.
Interogare potrivire
O interogare de potrivire este o interogare standard care este folosită practic fie că ai nevoie de o interogare full-text sau una exactă.
Dacă folosești match pentru a interoga un câmp full-text, acesta va folosi analizorul pentru a analiza caracterele interogate înainte de interogarea propriu-zisă:
Dacă specifici o valoare exactă sub Match, va căuta valoarea dată când întâlnește un șir de număr, dată, boolean sau not_analyzed:
Sfat: Când faci o căutare prin potrivire exactă, cel mai bine este să folosești instrucțiuni de filtru, deoarece instrucțiunile de filtru stochează datele în cache.
O interogare de potrivire poate căuta doar o valoare exactă care specifică un câmp exact, iar tot ce trebuie să faci este să specifici numele corect al câmpului pentru a evita erorile de sintaxă.
multi_match Interogare
multi_match interogare îți permite să cauți mai multe câmpuri simultan pe baza unei interogări de potrivire și să cauți unul în mai multe câmpuri simultan:
Interogare bool
Interogările bool sunt similare cu filtrarea bool și sunt folosite pentru a combina mai multe clauze de interogare. Diferența este că filtrul bool poate indica direct dacă potrivirea este reușită, în timp ce interogarea bool calculează _score (scorul de corelație) fiecărei clauze de interogare.
must:: 查询指定文档一定要被包含。 must_not:: Documentele specificate de interogare nu trebuie incluse.
should:: 查询指定文档,有则可以为文档相关性加分。
Interogarea următoare va descoperi că câmpul de titlu conține "cum să faci milioane" și câmpul "etichetă" nu este marcat ca spam. Dacă sunt etichetate ca "stelate" sau au o dată de lansare înainte de 2014, atunci aceste documente corespunzătoare vor fi la un nivel mai ridicat decât site-urile similare:
Sfat: Dacă nu există o clauză must în interogarea bool, ar trebui să existe cel puțin o clauză must. Dar dacă există o clauză must, atunci interogarea poate fi făcută și fără clauza need.
Interogare wildcards
Folosiți interogările shell wildcard standard
Următoarea interogare corespunde documentelor care conțin W1F 7HW și W2F 8HW:
De exemplu, următoarea interogare pentru numele gazdei corespunde cu următorul wildcard din shell:
Interogare regexp
Să zicem că vrei să potrivești doar codurile poștale care încep cu W urmat de cifre. Folosirea interogărilor regexp îți permite să scrii modele mai complexe:
Această expresie regulată specifică că intrarea trebuie să înceapă cu W, urmată de un număr de la 0 la 9, urmată de unul sau mai multe alte caractere.
Următorul exemplu este cu toate începuturile regulate cu wxopen
Interogare prefix
Cu ce caracter începe, poți folosi prefixul mai simplu, așa cum se vede în exemplul de mai jos:
Potrivirea frazei
Când ai nevoie să găsești câteva cuvinte în apropiere, folosești match_phrase interogare:
Similar cu interogările de potrivire, interogarea match_phrase analizează mai întâi șirul de interogare pentru a produce o listă de termeni. Va căuta toate intrările, Totuși, doar documentele care conțin toți termenii de căutare sunt păstrate, iar pozițiile acestora trebuie să fie adiacente. O cerere pentru expresia Quick Fox nu se potrivește Oricare dintre documentația noastră, deoarece nicio documentație nu conține intrări rapide și casete adiacente. match_phrase interogare poate fi scrisă și ca o interogare de potrivire a frazei de tip:
|