term
la requête correspond à un seul terme tel quel: la valeur n'est pas analysée . Ainsi, il n'est pas nécessaire de le mettre en minuscules en fonction de ce que vous avez indexé.
Si vous avez fourni Bennett
au moment de l'indexation et que la valeur n'est pas analysée, la requête suivante ne retournera rien:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
query analysera l'entrée si des analyseurs sont définis pour le champ interrogé et trouvera les documents correspondant aux critères suivants:
- tous les termes doivent apparaître dans le champ
- ils doivent avoir le même ordre que la valeur d'entrée
Par exemple, si vous indexez les documents suivants (en utilisant l' standard
analyseur pour le champ foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
Cette match_phrase
requête ne renverra que les premier et deuxième documents:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
recherche par requête, par défaut, sur un champ _all qui contient le texte de plusieurs champs de texte à la fois. En plus de cela, il est analysé et prend en charge certains opérateurs (ET / OU ...), les caractères génériques, etc. (voir la syntaxe associée ).
Au fur et à mesure des match_phrase
requêtes, l'entrée est analysée en fonction de l'analyseur défini sur le champ interrogé.
Contrairement à match_phrase
, les termes obtenus après analyse ne doivent pas nécessairement être dans le même ordre, sauf si l'utilisateur a utilisé des guillemets autour de l'entrée.
Par exemple, en utilisant les mêmes documents qu'auparavant, cette requête renverra tous les documents:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
Mais cette requête renverra les 2 mêmes documents que la match_phrase
requête:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
Il y a beaucoup plus à dire sur les différentes options pour ces requêtes, veuillez consulter la documentation associée:
J'espère que cela est assez clair et que cela aidera.
match
requête utilise l'analyseur si le champ est analysé, donc oui. Par défaut, il renverra les documents ayant au moins un des termes (voir paramètreoperator
) et l'ordre n'est pas important.Je pense que quelqu'un cherche définitivement des différences entre eux en ce qui concerne la RECHERCHE PARTIELLE Voici mon analyse avec 'analyseur standard' par défaut : -
{"name": "Hello"}
Maintenant, que faire si nous voulons faire une recherche partielle avec ell ???
Ne fonctionnera pas, retournez en notant.
Ne fonctionnera pas, retournez en notant.
Conclusion - Le terme ou la correspondance ne peut pas du tout effectuer de recherche partielle
Fonctionnera donner le résultat {"name": "Hello"}
Ne fonctionnera pas, retournez en notant.
Conclusion - wildcard est capable de faire une recherche partielle avec un seul jeton
Fonctionnera donner le résultat {"name": "Hello"}
Fonctionnera donner le résultat {"name": "Hello"}.
Conclusion - query_string est capable de rechercher avec deux jetons sont donnés
-> ici les jetons sont ell et zz
la source
wildcard is able to do partial search with one token only
: plus précisément, leswildcard
requêtes par défaut ne fonctionnent que sur leskeyword
champs , qui sont par définition à jeton unique. Cela n'a rien à voir avec le contenu du champ contenant plus d'un mot. Dans votre requête générique, "ozzy hello" correspondrait.