2017-07-12 4 views
0

Ich versuche, alle Dienste mit einem anderen Code als 0 zu bekommen, finde ich keine Möglichkeit, es ohne mehrere Abfragen zu tun. Hier ist die Daten versuche ich für die Hilfe im Voraus zu fragen, dankBereich Abfrage auf Unterfeld Array mit elasticsearch

 "hits": [ 
    { 
     "_index": "database_index", 
     "_type": "system", 
     "_id": "AV03gG7B3dd3_xKqi09H", 
     "_score": 1, 
     "_source": { 
      "name_id": "BOX", 
      "room_id": "63190", 
      "event": "SysMonitor", 
      "data": { 
       "ip": "192.168.60.25 \n", 
       "ns": "192.168.0.1\n", 
       "uptime": "3:12" 
      }, 
      "services": { 
       "apache2": 1, 
       "gw-flash": 0, 
       "appmgr": 0, 
       "watchdog": 2, 
       "gui": 0, 
       "usb": 0, 
       "internet": 0 
      }, 
+0

Was haben Sie bisher versucht? –

Antwort

0

Dies ist eine klassische Volltextsuche Beispiel, wo man eine sehr komplizierte Abfrage schreiben könnte dies zu bedecken, oder Sie können dies auf Index optimieren Zeit und damit sehr günstige Anfragen haben. Wenn Sie Ihr Datenmodell ändern, um ein Feld zu haben, der alle Dienste enthält, die einen Wert von 0 oder 1 haben, könnte man leicht für die Suche, das heißt

services_zero: [gwflash, appmgr] 
services_one: [ apache2 ] 

Plötzlich Ihre Anfrage kann einfach oder Aggregat gegen diesen Bereichen suchen .

Nicht zu sagen, dass dies perfekt zu Ihrem Anwendungsfall passt, aber ich denke, es ist wert, die Datenmodellierungsstrategie hier zu überdenken.

Verwandte Themen