Bool Joint Query: Musím, Mal by must_not
Ak chceme požiadať o niečo podobné ako "obsah s BMW, ale nie v tagu", musíme použiť bool federated query.
Spoločný dotaz použije tri kľúčové slová: musí, mal by must_not.
Tieto tri možno pochopiť takto
must: Dokument musí presne zodpovedať podmienkam
should: Mal by obsahovať viac ako jednu podmienku, a ak je splnená aspoň jedna podmienka, tento dokument by mal spĺňať
must_not:Dokument nesmie spĺňať kritériá
Oficiálny úvod na webovej stránke:https://www.elastic.co/guide/cn/ ... bining-filters.html
Dotaz na DSL
match_all Dotaz
Všetky dokumenty je možné dotazovať a je to predvolený príkaz bez podmienok dotazu.
Tento dotaz sa často používa na zlúčenie filtrov. Napríklad musíte získať všetky poštové schránky a relevantnosť všetkých dokumentov je rovnaká, takže _score, ktorú dostanete, je 1.
Dotaz na zhodu
Dotaz na zhodu je štandardný dotaz, ktorý sa v podstate používa bez ohľadu na to, či potrebujete plnotextový dotaz alebo presný dotaz.
Ak použijete match na dotaz na plnotextové pole, analyzátor použije na spracovanie znakov dotazu pred samotným dotazom:
Ak zadáte presnú hodnotu pod zhodou, bude vyhľadávať vašu danú hodnotu, keď narazí na číslo, dátum, booleovský alebo not_analyzed reťazec:
Tip: Pri vyhľadávaní podľa presnej zhody je najlepšie používať filter príkazy, pretože filter príkazy ukladajú dáta do vyrovnávacej pamäte.
Dotaz na zhodu môže vyhľadávať len presnú hodnotu, ktorá špecifikuje presné pole, a stačí zadať správny názov poľa, aby ste sa vyhli syntaxickým chybám.
multi_match Dotaz
multi_match dotaz vám umožňuje vyhľadávať viacero polí naraz na základe zhodného dotazu a vyhľadávať jedno v rôznych poliach naraz:
Bool dopyt
Bool dotazy sú podobné bool filtrácii a používajú sa na zlúčenie viacerých dotazových klauzúl. Rozdiel je v tom, že bool filter môže priamo povedať, či je zhoda úspešná, zatiaľ čo bool dotaz vypočíta _score (korelačné skóre) každej dopytovej klauzuly.
must:: 查询指定文档一定要被包含。 must_not:: Dotazované dokumenty nesmú byť zahrnuté.
should:: 查询指定文档,有则可以为文档相关性加分。
Nasledujúci dotaz zistí, že pole názvu obsahuje "ako zarobiť milióny" a pole "tag" nie je označené ako spam. Ak sú označené ako "hviezdičkové" alebo majú dátum vydania pred rokom 2014, tieto zodpovedajúce dokumenty budú na vyššej úrovni ako podobné stránky:
Tip: Ak pod bool dotazom nie je klauzula 'mus', mala by tam byť aspoň jedna klauzula 'mala by'. Ak však existuje klauzula povinnosti, dotaz môže byť vykonaný aj bez klauzuly potreby.
Dotaz na žolíky
Použite štandardné shell wildcard dotazy
Nasledujúci dotaz zodpovedá dokumentom obsahujúcim W1F 7HW a W2F 8HW:
Napríklad nasledujúci dotaz na hostiteľské meno zodpovedá nasledujúcej shellovej žolíkovej karte:
regexp dotaz
Povedzme, že chcete porovnať iba PSČ začínajúce na W a nasledované číslami. Použitie regexp dotazov umožňuje písať zložitejšie vzory:
Tento regulárny výraz určuje, že prvok musí začínať na W, nasledované číslom od 0 do 9, potom jedným alebo viacerými ďalšími znakmi.
Nasledujúci príklad sú všetky regulárne začiatky s wxopen
Dotaz na prefix
Akým znakom začína, môžete použiť jednoduchšie prefix, ako v príklade nižšie:
Párovanie fráz
Keď potrebujete nájsť niekoľko slov v tesnej blízkosti, použijete match_phrase dotaz:
Podobne ako pri match dotazoch, match_phrase dotaz najprv analyzuje dotazovací reťazec, aby vytvoril zoznam pojmov. Bude vyhľadávať všetky záznamy, Avšak uchovávajú sa len dokumenty obsahujúce všetky vyhľadávané výrazy a pozície výrazov by mali byť vedľa seba. Dotaz na frázu Quick Fox sa nezhoduje Žiadna z našich dokumentov, pretože žiadna dokumentácia neobsahuje rýchle a boxové záznamy vedľa seba. match_phrase dotaz môže byť tiež zapísaný ako dotaz na zhodu typu frázy:
|