Dotaz na bool joint dotaz: musím, měl by, must_not
Pokud chceme požádat o něco podobného jako "obsah s BMW, ale ne v tagu", musíme použít bool federated query.
Společný dotaz použije tři klíčová slova: musí, měl by, must_not.
Tyto tři lze takto pochopit
must: Dokument musí přesně odpovídat podmínkám
should: Mělo by mít více než jednu podmínku, a pokud je splněna alespoň jedna podmínka, tento dokument splní Should
must_not:Dokument nesmí splňovat kritéria
Oficiální úvod na webové stránky:https://www.elastic.co/guide/cn/ ... bining-filters.html
Dotaz na DSL
match_all Dotaz
Všechny dokumenty lze dotazovat a je to výchozí příkaz bez podmínek dotazu.
Tento dotaz se často používá k sloučení filtrů. Například musíte získat všechny schránky a relevance všech dokumentů je stejná, takže _score, kterou dostanete, je 1.
Dotaz na shodu
Dotaz na shodu je standardní dotaz, který se v podstatě používá bez ohledu na to, zda potřebujete plnotextový dotaz nebo přesný dotaz.
Pokud použijete match k dotazování na plnotextové pole, použije analyzátor k analýze znaků dotazu před samotným dotazem:
Pokud zadáte přesnou hodnotu pod shodou, vyhledá vaši hodnotu, když narazí na číslo, datum, booleovskou nebo not_analyzed řetězec:
Tip: Při vyhledávání podle přesné shody je nejlepší používat filtrační příkazy, protože filtrační příkazy ukládají data do mezipaměti.
Dotaz na shodu může vyhledávat pouze přesnou hodnotu, která specifikuje přesné pole, a stačí zadat správný název pole, abyste předešli syntaktickým chybám.
multi_match Dotaz
multi_match dotaz vám umožňuje vyhledávat více polí současně na základě dotazu shody a zároveň vyhledávat pole ve více polích:
Bool dotaz
Bool dotazy jsou podobné bool filtrování a používají se ke sloučení více dotazových klauzulí. Rozdíl je v tom, že bool filtr může přímo říct, zda je shoda úspěšná, zatímco bool dotaz počítá _score (korelacní skóre) každé dotazovací klauzule.
must:: 查询指定文档一定要被包含。 must_not:: Dotazy určené k dokumentům nesmí být zahrnuty.
should:: 查询指定文档,有则可以为文档相关性加分。
Následující dotaz zjistí, že pole názvu obsahuje "jak vydělat miliony" a pole "tag" není označeno jako spam. Pokud jsou označeny jako "hvězdičkované" nebo mají datum vydání před rokem 2014, pak budou tyto shodné dokumenty na vyšší úrovni než podobné stránky:
Tip: Pokud pod bool dotazem není klauzule "musít", měla by být alespoň jedna klauzule "měla by". Pokud však existuje klauzule nutnosti, pak lze dotaz provést i bez klauzule potřeby.
Dotaz na divoké karty
Použijte standardní shell wildcard dotazy
Následující dotaz odpovídá dokumentům obsahujícím W1F 7HW a W2F 8HW:
Například následující dotaz na název hostitele odpovídá následujícímu žolíku shellu:
regexp dotaz
Řekněme, že chcete spojit pouze PSČ začínající na W a následovaná čísly. Použití regexp dotazů umožňuje psát složitější vzory:
Tento regulární výraz určuje, že prvek musí začínat na W, následované číslem od 0 do 9 a následně jedním nebo více dalšími znaky.
Následující příklad je všechny regulární starty s wxopen
Dotaz na předponu
Jakým znakem začíná, můžete použít předponu jednodušší, jako je uvedeno v příkladu níže:
Párování frází
Když potřebujete najít pár slov v blízké blízkosti, použijete match_phrase dotaz:
Podobně jako u match dotazů match_phrase dotaz nejprve parsuje dotazovací řetězec, aby vytvořil seznam termínů. Bude hledat všechny záznamy, Nicméně jsou uchovávány pouze dokumenty obsahující všechna vyhledávaná slova a pozice těchto výrazů by měly být sousední. Dotaz na frázi Quick Fox neodpovídá Žádná z našich dokumentací, protože žádná dokumentace neobsahuje rychlé a rámečkové záznamy vedle sebe. match_phrase dotaz lze také zapsat jako dotaz na shodu typu fráze:
|