Question conjointe BOOL : Doit, Doit, must_not
Si nous voulons demander quelque chose de similaire à « contenu avec BMW, mais pas en tag », nous devons utiliser bool federated query.
La requête conjointe utilisera trois mots-clés : doit, doit, must_not.
Ces trois éléments peuvent être compris ainsi
must: Le document doit correspondre exactement aux conditions
should: doit comporter plus d’une condition, et si au moins une condition est remplie, ce document remplira si
must_not :Le document ne doit pas correspondre aux critères
Introduction du site officiel :https://www.elastic.co/guide/cn/ ... bining-filters.html
Interroger DSL
match_all Requête
Tous les documents peuvent être interrogés, et c’est l’instruction par défaut sans conditions de requête.
Cette requête est souvent utilisée pour fusionner des filtres. Par exemple, il faut récupérer toutes les boîtes aux lettres, et toute la pertinence des documents est la même, donc le _score que vous obtenez est 1.
Requête de correspondance
Une requête de correspondance est une requête standard qui est essentiellement utilisée que vous ayez besoin d’une requête en texte intégral ou d’une requête exacte.
Si vous utilisez « match » pour interroger un champ de texte complet, il utilisera l’analyseur pour analyser les caractères de requête avant la requête réelle :
Si vous spécifiez une valeur exacte sous correspondance, il cherchera votre valeur donnée lorsqu’il rencontrera un nombre, une date, un boolean ou une chaîne not_analyzed :
Conseil : Lors d’une recherche par correspondance exacte, il est préférable d’utiliser des instructions filtre car les instructions filtres mettent les données en cache.
Une requête de correspondance ne peut rechercher qu’une valeur exacte qui spécifie un champ exact, et il suffit de spécifier le nom de champ correct pour éviter les erreurs de syntaxe.
multi_match Requête
multi_match requête vous permet de rechercher plusieurs champs simultanément à partir d’une requête de correspondance, et d’en chercher un dans plusieurs champs en même temps :
Requête BOOL
Les requêtes bool sont similaires au filtrage bool et servent à fusionner plusieurs clauses de requête. La différence est que le filtre bool peut indiquer directement si la correspondance est réussie, tandis que la requête bool calcule le _score (score de corrélation) de chaque clause de requête.
must:: 查询指定文档一定要被包含。 must_not : Les documents spécifiés par requête ne doivent pas être inclus.
should:: 查询指定文档,有则可以为文档相关性加分。
La requête suivante constatera que le champ titre contient « comment gagner des millions » et que le champ « tag » n’est pas marqué comme spam. S’ils sont classés « étoilés » ou ont une date de sortie antérieure à 2014, alors ces documents correspondants seront à un niveau supérieur à celui de sites similaires :
Conseil : S’il n’y a pas de clause « must » dans la requête bool, il devrait y avoir au moins une clause « doit ». Mais s’il existe une clause « must », alors la requête peut aussi être faite sans la clause « need ».
Interrogation sur les jokers
Utilisez les requêtes jokers standard du shell
La requête suivante correspond aux documents contenant W1F 7HW et W2F 8HW :
Par exemple, la requête suivante pour le nom d’hôte correspond au joker du shell suivant :
requête regexp
Disons que vous souhaitez ne faire correspondre que les codes postaux commençant par W suivi de chiffres. L’utilisation de requêtes regexp vous permet d’écrire des motifs plus complexes :
Cette expression régulière précise que l’entrée doit commencer par W, suivie d’un nombre de 0 à 9, puis d’un ou plusieurs autres caractères.
L’exemple suivant montre tous les débuts réguliers avec wxopen
Requête au préfixe
Par quel caractère commence-t-il, vous pouvez utiliser le préfixe plus simplement, comme dans l’exemple ci-dessous :
Appariement de phrases
Lorsque vous devez trouver quelques mots à proximité, vous utilisez match_phrase requête :
À l’instar des requêtes par correspondance, match_phrase requête analyse d’abord la chaîne de requêtes pour produire une liste de termes. Il cherchera toutes les entrées, Cependant, seuls les documents contenant tous les termes de recherche sont conservés, et les positions des termes doivent être adjacentes. Une requête pour l’expression Quick Fox ne correspondra pas Aucune de nos documentations, car aucune ne contient d’entrées rapides et de cases adjacentes. match_phrase requête peut aussi être écrite comme une requête de correspondance de phrase typographique :
|