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.