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