2016-07-06 26 views
0

如何執行JOIN在相同指數elasticsearch操作JOIN操作?如何執行elasticsearch

這是FOW每個文件組領域:

 "@version": "1", 
     "@timestamp": "2016-04-26T15:56:05.379Z", 
     "phone": "..." 
     "path": "...", 
     "host": "...", 
     "type": "...", 
     "clientip": "...", 
     "ident": "-", 
     "auth": "-", 
     "timestamp": "...", 
     "verb": "...", 
     "uripath": "...", 
     "httpversion": "1.1", 
     "response": "200", 
     "bytes": "515", 
     "timetaken": "383", 
     "event_type": "type1" 
    } 

如果我會得到電話的有(EVENT_TYPETYPE1文件時間戳DATE1之間DATE2)和(TYPE2EVENT_TYPE時間戳 DATE3和

之間date4)在MySQL的思維是兩種觀點

之間的連接
+0

從文檔它說,「dis_max」功能,可以在這裏使用。你有過這個嗎? –

回答

0

我可能不是最優化的要求,但它的工作:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "should": [ 
      { 
       "bool": { 
       "must": [ 
        { 
        "range": { 
         "timestamp ": { 
         "lte": date1, 
         "gte": date2 
         } 
        } 
        }, 
        { 
        "term": { 
         "event_type ": "type1" 
        } 
        } 
       ] 
       } 
      }, 
      { 
       "bool": { 
       "must": [ 
        { 
        "range": { 
         "timestamp ": { 
         "lte": date3, 
         "gte": date4 
         } 
        } 
        }, 
        { 
        "term": { 
         "event_type ": "type2" 
        } 
        } 
       ] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

它將返回所有具有類型1的event_type,日期1和日期2之間的時間戳以及具有類型2的event_type和日期3和日期4之間的時間戳的所有文檔。

bool should將返回所有尊重任何部分的文件。

+0

這就像(EVENT_TYPE TYPE1的,DATE1和date2之間的時間戳)或(2型EVENT_TYPE,DATE3和date4之間的時間戳) –

+0

@M_M我會添加細節,但如果你測試了它,我想有細節。 – baudsp

+0

@M_M是的,它是有(EVENT_TYPE TYPE1,時間戳DATE1和date2之間)的文件或(2型EVENT_TYPE,DATE3和date4之間的時間戳),但與AND,你不會有任何結果,不是嗎? – baudsp

相關問題