Bonjour,
Ma question concerne la construction de requ�te pour elasticsearch, je ne sais pas s'il s'agit de la bonne partie du forum pour la poser.
J'�cris une application pour rechercher des logs dans l'elastic de mon organisation et l'utilisateur peut rechercher des requ�tes nested sous cette forme :
J'aimerais que l'utilisateur puisse demander que certains champs dans la requ�te nested ne soient pas match�s.pathName:{ field1: "value1" AND field2: "value2" OR field3: "value3" }
Je peux le faire si je veux que toute la requ�te nested soit non match�, cela donne la requ�te suivante:
Et � partir de cette cha�ne de caract�re, je peux g�n�rer la requ�te suivante qui fonctionne bien :NOT pathName:{ field1: "value1" }
(La clause must_not[] est plac�e avant la clause nested parceque c'est l'ensemble de la clause nested que je ne veux pas matcher)
La requ�te ci-dessus fonctionne bien et renvoie le r�sultat attendu.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 "query": { "bool": { "filter": [ { "bool": { "must_not": [ {"nested": { "path": 'pathName', "query": { {"bool": { "should": [ { "match": { "pathName.field1": "value1" } } ], "minimum_should_match": 1 }} } }} ] } } {"range": { "@timestamp": { "format": 'strict_date_optional_time', "gte": "Sat Jul 09 2022 02:00:00 GMT+0200 (heure dété dEurope centrale)", "lte": "Mon Aug 08 2022 02:00:00 GMT+0200 (heure dété dEurope centrale)" } } } ] } }
J'aimerais maintenant que mon utilisateur puisse demander � l'int�rieur d'une requ�te nested de matcher certains champs et de ne pas matcher d'autres champs comme ceci:Par exemple, pour la requ�te suivante :pathName:{ NOT field1: "value1" AND field2: "value2" OR NOT field3: "value3" }
(En pratique, il y aura �videmment plus d'un �l�ment dans la requ�te nested , mais pour simplifier, je n'ai mis qu'un seul �l�ment dans la requ�te nested )pathName:{ NOT field1: "value1" }
Je veux obtenir tous les objets qui ne match pas pathName.field1:value1.
A partir de la cha�ne de caract�re pr�c�dente, j'arrive � g�n�rer la requ�te suivante :
(La clause must_not[] est alors plac�e � l'int�rieur de la clause nested car ce n'est qu'une partie des �l�ments de la clause nested que nous ne voulons pas matcher)
Mais cette requ�te renvoie les r�sultats sans prendre en compte les clauses must_not[] contenues dans la requ�te nested.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 "query": { "bool": { "filter": [ {"nested": { "path": 'pathName', "query": { {"bool": { "must_not": [ { "bool": { "should": [ { "match": { "pathName.field1": "value1" } } ], "minimum_should_match": 1 } } ] }} } }}, {"range": { "@timestamp": { "format": 'strict_date_optional_time', "gte": "Sat Jul 09 2022 02:00:00 GMT+0200 (heure dété dEurope centrale)", "lte": "Mon Aug 08 2022 02:00:00 GMT+0200 (heure dété dEurope centrale)" } } } ] } }
N'est-il pas possible de sp�cifier une clause must_not[] � l'int�rieur d'une requ�te nested ou est-ce que je g�n�re mal la requ�te envoy�e � elastic ?
Merci d'avance si vous prenez le temps de m'aider.





R�pondre avec citation



Partager