2016-07-06 4 views
0

동일한 인덱스에서 elasticsearch에서 JOIN 연산을 수행하는 방법은 무엇입니까?elasticsearch에서 JOIN 연산을 수행하는 방법

 "@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_TYPE 타입 1의이 문서의, 타임 스탬프 날짜 1 사이를 얻을 수 :

각 문서 FOW 필드의 집합입니다 및 date2) 및 (event_type유형 2이고, MySQL의 생각에서 타임 스탬프

) date4 date3 사이 는이 두 가지보기

사이의 조인 것
+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" 
        } 
        } 
       ] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

type1의 event_type, date1과 date2 사이의 시간 소인 및 type2의 event_type을 가진 모든. 서, date3과 date4 사이의 시간 소인을 갖는 모든. 서를 리턴합니다.

bool should은 해당 부분을 존중하는 모든 문서를 반환합니다.

+0

이것은 (type1의 event_type, date1과 date2 사이의 타임 스탬프) OR (type2의 event_type, date3과 date4 사이의 타임 스탬프) –

+0

@M_M 세부 사항을 추가 하겠지만 세부 테스트를 수행하면 세부 사항을 입력하고 싶습니다. – baudsp

+0

@M_M 예 (type1의 event_type, date1과 date2 사이의 타임 스탬프) 또는 (type2의 event_type, date3과 date4 사이의 타임 스탬프) 문서이지만 AND를 사용하면 결과가 없습니다. – baudsp

관련 문제