Bool Joint Query: Moram, Moram, must_not
Če želimo zahtevati nekaj podobnega kot "vsebina z BMW, a ne v oznaki", moramo uporabiti bool federated query.
Skupna poizvedba bo uporabila tri ključne besede: mora, mora must_not.
Te tri lahko razumemo na ta način
must: Dokument mora popolnoma ustrezati pogojem
should: bi moral imeti več kot en pogoj, in če je izpolnjen vsaj en pogoj, bo ta dokument izpolnil
must_not:Dokument ne sme ustrezati kriterijem
Uradni uvod na spletno stran:https://www.elastic.co/guide/cn/ ... bining-filters.html
Poizvedba DSL
match_all Poizvedba
Vse dokumente je mogoče poizvedovati, in to je privzeti stavek brez pogojev poizvedbe.
Ta poizvedba se pogosto uporablja za združevanje filtrov. Na primer, morate pridobiti vse poštne nabiralnike, pri čemer je relevantnost vseh dokumentov enaka, zato je _score, ki ga dobite, 1.
Poizvedba o ujemanju
Poizvedba za ujemanje je standardna poizvedba, ki se uporablja ne glede na to, ali potrebujete poizvedbo v celotnem besedilu ali natančno poizvedbo.
Če uporabiš match za poizvedbo polnega besedila, bo uporabil analizator za razčlenitev znakov poizvedbe pred dejansko poizvedbo:
Če določite natančno vrednost pod ujemanjem, bo iskal vašo vrednost, ko naleti na številko, datum, boolean ali not_analyzed niz:
Nasvet: Pri iskanju po natančnem ujemanju je najbolje uporabljati stavke filtra, saj stavki filtra predpomnijo podatke.
Poizvedba za ujemanje lahko išče le natančno vrednost, ki določa točno polje, in vse, kar morate storiti, je, da določite pravilno ime polja, da se izognete sintaktičnim napakam.
multi_match Poizvedba
multi_match poizvedba vam omogoča, da hkrati iščete več polj na podlagi poizvedbe za ujemanje in hkrati poiščete več polj:
Bool poizvedba
Bool poizvedbe so podobne bool filtriranju in se uporabljajo za združevanje več klavzul poizvedb. Razlika je v tem, da bool filter neposredno pove, ali je ujemanje uspešno, medtem ko bool poizvedba izračuna _score (korelacijsko oceno) vsake poizvedbene klavzule.
must:: 查询指定文档一定要被包含。 must_not:: Poizvedba z določenimi dokumenti ne smejo biti vključena.
should:: 查询指定文档,有则可以为文档相关性加分。
Naslednja poizvedba bo pokazala, da naslovno polje vsebuje »kako zaslužiti milijone« in polje »oznaka« ni označeno kot neželena pošta. Če so označeni kot "označeni z zvezdico" ali imajo datum izdaje pred letom 2014, bodo ti ujemajoči se dokumenti na višji ravni kot na podobnih straneh:
Nasvet: Če pod bool poizvedbo ni klavzule 'nuj', naj bo vsaj ena klavzula 'moral bi'. Če pa obstaja klavzula nuj, je mogoče poizvedbo izvesti tudi brez klavzule potrebe.
Poizvedba o divjih kartah
Uporabite standardne poizvedbe z divjimi kartami v lupini
Naslednja poizvedba se ujema z dokumenti, ki vsebujejo W1F 7HW in W2F 8HW:
Na primer, naslednja poizvedba za ime gostitelja ustreza naslednjemu wildcardu lupine:
Regexp poizvedba
Recimo, da želite ujeti samo poštne številke, ki se začnejo z W in sledijo številke. Uporaba regexp poizvedb omogoča pisanje bolj zapletenih vzorcev:
Ta regularni izraz določa, da se mora vnos začeti z W, sledi številka od 0 do 9, nato pa še eden ali več drugih znakov.
Naslednji primer so vsi regularni začetki z wxopen
Poizvedba o predponi
S katerim znakom se začne, lahko uporabite predpono preprosteje, kot v spodnjem primeru:
Ujemanje fraz
Ko potrebujete nekaj besed v bližini, uporabite match_phrase poizvedbo:
Podobno kot pri poizvedbah za ujemanje, match_phrase poizvedba najprej razčleni poizvedbeni niz in ustvari seznam izrazov. Iskal bo vse vnose, Vendar pa se hranijo le dokumenti, ki vsebujejo vse iskalne izraze, in položaji izrazov morajo biti sosednji. Poizvedba za frazo Quick Fox ne bo ustrezala Nobena naša dokumentacija, saj nobena dokumentacija ne vsebuje kratkih in okvirnih vnosov drug ob drugem. match_phrase poizvedbo je mogoče zapisati tudi kot ujemalno poizvedbo tipne fraze:
|