2017-07-12 3 views
0

私は0以外のコードですべてのサービスを取得しようとしていますが、複数のクエリを実行しなくてもそれを行う方法はありません。ここ は私が照会しようとしているデータだ、助けを事前に感謝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

これまでに何を試しましたか? –

答えて

0

これは、1つは、これをカバーするために非常に複雑なクエリを書くことができたり、インデックスでこれを最適化することができ、古典的な全文検索の例であり、非常に安価なクエリを持っています。あなたが0または1の値を持つすべてのサービスを含むフィールドを持つようにデータモデルを変更する場合は、簡単すなわち

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

突然、あなたのクエリを簡単に検索したり、これらのフィールドに対して集約することができ、そのために検索することができます。

これはあなたのユースケースに完全に合っているとは言いませんが、ここではデータモデリング戦略を再考する価値があると思います。

関連する問題