J'ai un document indexé dans elasticsearch :
{
"content":"Some content with @someone mention",
"mentions":["someone"],
"userId":"4dff31eaf8815f4df04e2d62"
}
J'essaie de le trouver par le biais d'une requête :
{
"query": {
"filtered": {
"filter": { "term":{"userId":"4dff31eaf8815f4df04e2d62"} },
"query": {
term: {"mentions":"someone"}
}
}
}
}
et n'obtiennent aucun résultat.
Dans le même temps, la recherche de contenu fonctionne correctement :
{
"query": {
"filtered": {
"filter": { "term":{"userId":"4dff31eaf8815f4df04e2d62"} },
"query": {
"term": {"content":"some"}
}
}
}
}
Une syntaxe particulière est-elle nécessaire pour la recherche dans les tableaux ? J'ai trouvé plusieurs sujets [ 1 , 2 ] sur les tableaux dans elasticsearch, mais il n'y a pas de réponse directe.
UPD L'appel à la cartographie renvoie le résultat suivant :
{
"records": {
"all":{
"properties":{
"content":{"type":"string"},
"userId":{"type":"string"},
"mentions":{"type":"string"}
}
}
}
}
UPD2 J'ai trouvé la source du problème. J'ai accidentellement introduit une erreur dans ma question. Le nom d'utilisateur que j'avais en fait dans la base de données était sous la forme "quelqu'un" (le trait de soulignement est important). L'index standard l'a donc divisé en 2 mots et la requête pour "quelqu'un" a échoué.