Aide pour une query ES


(Stéphane Merle) #1

Bonjour,

je souhaite trouver les ip ayant pour DERNIER document un document contenant au moins 1 rbl puis trier les documents par RBL. Le but est d'avoir une page avec les ip par RBL.

les documents sont de la forme :

{
    "_index": "rblwatcherb",
    "_type": "callback",
    "_id": "AVFwcy7ZITJ7fN5W5A7o",
    "_score": 1,
    "_source": {
       "Id": "19d265ca-c072-460e-637d-a1cab4e25096",
       "Date": "2015-12-05T05:12:47.453652323Z",
       "Ip": "62.4.5.104",
       "Listed": true,
       "Rbls": [
          {
             "Id": "4f9a8a098de3e78240000053",
             "Name": "RATS RBL",
             "Url": "http://www.spamrats.com/index.php"
          },
          {
             "Id": "4f9a8a098de3e78240000031",
             "Name": "spam.dnsbl.sorbs.net",
             "Url": "http://www.dnsbl.nl.sorbs.net/"
          }
       ],
       "Sig": "09a11cf7a0acf983c669e8e4abe8177def22983a84a98b2d564877570d70ae4f"
    }
 },
 {
    "_index": "rblwatcherb",
    "_type": "callback",
    "_id": "AVFwcy-UITJ7fN5W5A7p",
    "_score": 1,
    "_source": {
       "Id": "098da4b1-7c81-4b8c-7bbf-94f19c4cd880",
       "Date": "2015-12-05T05:12:47.641196807Z",
       "Ip": "62.4.5.107",
       "Listed": true,
       "Rbls": [
          {
             "Id": "4f9a8a098de3e78240000053",
             "Name": "RATS RBL",
             "Url": "http://www.spamrats.com/index.php"
          },
          {
             "Id": "4f9a8a098de3e78240000031",
             "Name": "spam.dnsbl.sorbs.net",
             "Url": "http://www.dnsbl.nl.sorbs.net/"
          }
       ],
       "Sig": "af8657bb89901b11c982ef72c2a3fb232b10c84dabdb9ea00bdf3a0b8845e01a"
    }
 }

C'est 2 exemples ont des entrées en RBL donc seront à prendre en compte tous les 2 mais je pourrais avoir un message pour l'une des ip plus récent avec 0 RBL et donc ne pas vouloir afficher cette entrée ...

j'espère que j'arrive à être clair ... mais c'est pas simple :wink:

en SQL je ferais un truc dans ce genre la :

select ip, Rbls_name from tableRBL where Rbls_name is not null group by ip, Rbls_name order by date desc

et encore ça rend pas terrible, il faut bosser sur le dernier document pour chaque IP et en sortir que ceux qui ont listed=true ou le array rbls non vide.

Merci en tout cas pour votre aide


(system) #2