Bool bendra užklausa: turi, turėtų, must_not
Jei norime prašyti kažko panašaus į "turinys su BMW, bet ne žymoje", turime naudoti bool federated query.
Bendroje užklausoje bus naudojami trys raktiniai žodžiai: turi, turėtų, must_not.
Šiuos tris galima suprasti taip
must: Dokumentas turi tiksliai atitikti sąlygas
should: turėtų turėti daugiau nei vieną sąlygą, o jei tenkinama bent viena sąlyga, šis dokumentas atitiks
must_not:Dokumentas neturi atitikti kriterijų
Oficialus svetainės pristatymas:https://www.elastic.co/guide/cn/ ... bining-filters.html
Užklausos DSL
match_all užklausa
Galima pateikti užklausą dėl visų dokumentų, ir tai yra numatytasis sakinys be užklausos sąlygų.
Ši užklausa dažnai naudojama filtrams sulieti. Pavyzdžiui, turite nuskaityti visas pašto dėžutes, o visų dokumentų aktualumas yra vienodas, todėl gaunamas _score yra 1.
Atitikties užklausa
Atitikties užklausa yra standartinė užklausa, kuri iš esmės naudojama nesvarbu, ar jums reikia viso teksto užklausos, ar tikslios užklausos.
Jei naudojate atitiktį viso teksto lauko užklausai, analizatorius naudos užklausos simbolius prieš faktinę užklausą:
Jei nurodysite tikslią reikšmę dalyje atitiktis, ji ieškos nurodytos reikšmės, kai aptiks skaičių, datą, loginį arba not_analyzed eilutę:
Patarimas: atliekant tikslios atitikties paiešką geriausia naudoti filtro sakinius, nes filtrų išrašai talpykloje kaupia duomenis.
Atitikties užklausa gali ieškoti tik tikslios reikšmės, nurodančios tikslų lauką, ir tereikia nurodyti teisingą lauko pavadinimą, kad išvengtumėte sintaksės klaidų.
multi_match užklausa
multi_match užklausa leidžia ieškoti keliuose laukuose vienu metu pagal atitikties užklausą ir ieškoti vieno iš jų keliuose laukuose vienu metu:
Bool užklausa
Bool užklausos yra panašios į Bool filtravimą ir naudojamos kelioms užklausų sąlygoms sulieti. Skirtumas tas, kad bool filtras gali tiesiogiai nurodyti, ar atitiktis sėkminga, o bool užklausa apskaičiuoja kiekvienos užklausos sąlygos _score (koreliacijos balą).
must:: 查询指定文档一定要被包含。 must_not:: Užklausos nurodyti dokumentai neturi būti įtraukti.
should:: 查询指定文档,有则可以为文档相关性加分。
Toliau pateikta užklausa rasite, kad pavadinimo lauke yra "kaip uždirbti milijonus", o laukas "žyma" nėra pažymėtas kaip šlamštas. Jei jie pažymėti kaip "žvaigždutėmis" arba jų išleidimo data yra ankstesnė nei 2014 m., Šie atitikimo dokumentai bus aukštesnio lygio nei panašios svetainės:
Patarimas: Jei po bool užklausa nėra būtinos sąlygos, turėtų būti bent viena sąlyga "should". Bet jei yra sąlyga būtina, užklausą galima pateikti ir be būtinybės sąlygos.
Pakaitos simbolių užklausa
Naudoti standartines apvalkalo pakaitos užklausas
Ši užklausa atitinka dokumentus, kuriuose yra W1F 7HW ir W2F 8HW:
Pavyzdžiui, ši pagrindinio kompiuterio vardo užklausa atitinka šį apvalkalo pakaitos simbolį:
regexp užklausa
Tarkime, kad norite atitikti tik pašto kodus, prasidedančius W ir skaičiais. Naudodami regexp užklausas galite rašyti sudėtingesnius modelius:
Ši reguliarioji išraiška nurodo, kad įrašas turi prasidėti W, po kurio turi būti skaičius nuo 0 iki 9, po kurio seka vienas ar keli kiti simboliai.
Šis pavyzdys yra visi įprasti prasideda su wxopen
priešdėlio užklausa
Kokiu simboliu jis prasideda, galite naudoti priešdėlį paprasčiau, kaip parodyta toliau pateiktame pavyzdyje:
Frazės atitikimas
Kai reikia rasti kelis žodžius arti, naudokite match_phrase užklausą:
Panašiai kaip atitikties užklausos, match_phrase užklausa pirmiausia analizuoja užklausos eilutę, kad sukurtų terminų sąrašą. Ji ieškos visų įrašų, Tačiau saugomi tik dokumentai, kuriuose yra visi paieškos terminai, o terminų pozicijos turėtų būti greta. Frazės "Quick Fox" užklausa nesutaps bet kokia mūsų dokumentacija, nes jokioje dokumentacijoje nėra greitųjų ir langelių įrašų greta vienas kito. match_phrase užklausa taip pat gali būti parašyta kaip frazės tipo atitikties užklausa:
|