Bool Joint запитване: Трябва, трябва, must_not
Ако искаме да поискаме нещо подобно на "съдържание с BMW, но не в таг", трябва да използваме bool federated query.
Съвместната заявка ще използва три ключови думи: трябва, трябва, must_not.
Тези три могат да се разберат по този начин
must: Документът трябва да съответства точно на условията
should: трябва да има повече от едно условие и ако поне едно условие е изпълнено, този документ ще изпълни трябва
must_not:Документът не трябва да отговаря на критериите
Официално въведение в уебсайта:https://www.elastic.co/guide/cn/ ... bining-filters.html
Заявка за DSL
match_all Заявка
Всички документи могат да бъдат заявявани и това е по подразбиране без условия за заявка.
Тази заявка често се използва за сливане на филтри. Например, трябва да изтеглите всички пощенски кутии и всички релевантности на документа са еднакви, така че _score, което получавате, е 1.
Заявка за съвпадение
Заявката за съвпадение е стандартна заявка, която се използва независимо дали ви трябва пълнотекстова заявка или точна заявка.
Ако използвате match за заявка към пълнотекстово поле, той ще използва анализатора, за да анализира символите на заявката преди самата заявка:
Ако посочите точна стойност под "съвпадение", той ще търси дадена стойност, когато срещне число, дата, булев или not_analyzed низ:
Съвет: При търсене на точно съвпадение, най-добре е да използвате филтърни оператори, защото филтърните оператори кешират данните.
Заявка за съвпадение може да търси само точна стойност, която посочва точно поле, и всичко, което трябва да направите, е да посочите правилното име на полето, за да избегнете синтактични грешки.
multi_match Заявка
multi_match заявка ви позволява да търсите няколко полета едновременно въз основа на съвпадаща заявка и да търсите едно в няколко полета едновременно:
Bool заявка
Bool заявките са подобни на буловото филтриране и се използват за сливане на множество заявени клаузи. Разликата е, че буловият филтър може директно да покаже дали съвпадението е успешно, докато буловата заявка изчислява _score (корелационен резултат) на всяка заявка клауза.
must:: 查询指定文档一定要被包含。 must_not:: Документите, посочени за заявка, не трябва да се включват.
should:: 查询指定文档,有则可以为文档相关性加分。
Следващата заявка ще открие, че заглавното поле съдържа "как да спечелите милиони" и полето "таг" не е маркирано като спам. Ако са означени като "звездени" или имат дата на издаване преди 2014 г., тогава тези съвпадащи документи ще бъдат на по-високо ниво от подобни сайтове:
Съвет: Ако няма клауза за задължително в bool заявката, трябва да има поне една клауза "трябва". Но ако има задължителна клауза, тогава заявката може да бъде направена и без клауза за необходимост.
Запитване за уайлдкарти
Използвайте стандартни заявки за уайлдкард за shell
Следната заявка съвпада с документи, съдържащи W1F 7HW и W2F 8HW:
Например, следната заявка за hostname съвпада със следния уайлдкард на shell:
Regexp заявка
Да кажем, че искате да съпоставите само пощенски кодове, които започват с W, последвани от номера. Използването на regexp заявки ви позволява да пишете по-сложни шаблони:
Този редовен израз уточнява, че записът трябва да започва с W, последван от число от 0 до 9, последван от един или повече други знаци.
Следният пример е всички редовни започвания с wxopen
Заявка за префикс
С кой знак започва, можеш да използваш префикса по-просто, както е в примера по-долу:
Съвпадение на фрази
Когато трябва да намерите няколко думи в близост, използвате match_phrase заявка:
Подобно на заявките за съвпадение, match_phrase заявка първо анализира низа на заявката, за да получи списък с термини. Той ще търси всички записи, Въпреки това, се съхраняват само документи, съдържащи всички търсещи думи, а позициите на термините трябва да са съседни. Запитване за фразата Quick Fox няма да съвпадне Всяка от нашите документи, тъй като няма документи да съдържа бързи и съседни записи в кутии. match_phrase заявка може да бъде написана и като заявка за съвпадение на тип-фраза:
|