2017-10-12 4 views
0

특정 인물 (PersonId으로 식별)이 지난 3 개월 동안 연속 2 개월 동안 매월 1 회 이상 도시를 방문했는지 여부를 감지 할 수있는 쿼리를 작성하고 싶습니다.지난 3 개월 동안 2 개월 연속으로 사건이 발생했는지 확인하는 방법은 무엇입니까?

Elasticsearch 쿼리 언어를 사용할 수 있습니까?

한 달에 한 사람이 도시를 방문한 횟수를 계산할 수 있습니다. 그러나 지난 2 개월 동안 지난 3 개월 동안 발생한 방문수를 계산하는 방법을 모르겠습니다.

GET visits/_search? 
{ 
"size":0, 
"query": { 
    "bool": { 
     "must": [ 
     { "match": { 
      "PersonId": "AAA" 
     }} 
     ] 
    } }, 
    "aggs": { 
    "visit_days": { 
    "terms" : { 
     "field": "Month" 
    } 
    } 
    } 
} 

Month 외에, 나는 또한 YearDate (이 날짜 타입)이 (가 문자열입니다).

답변

0

응용 프로그램 내에서 날짜 - 히스토그램 구문 분석 논리를 처리 할 수 ​​있다면 가장 좋은 시나리오 일 수 있습니다. 당신의 요구 사항을 충족

{ 
     "key_as_string": "2017-08-01T00:00:00.000Z", 
     "key": 1501545600000, 
     "doc_count": 1 
    }, 
    { 
     "key_as_string": "2017-09-01T00:00:00.000Z", 
     "key": 1504224000000, 
     "doc_count": 0 
    }, 
    { 
     "key_as_string": "2017-10-01T00:00:00.000Z", 
     "key": 1506816000000, 
     "doc_count": 1 
    } 

그리고 그 응답을 분석하고 수행

GET visits/_search 
{ 
    "size": 0, 
    "query": { 
    "bool": { 
     "filter": { 
     "range": { 
      "visit_days": { 
      "gte": "now-3M" 
      } 
     } 
     } 
    } 
    }, 
    "aggs": { 
    "histo": { 
     "date_histogram": { 
     "field": "visit_days", 
     "interval": "month" 
     } 
    } 
    } 
} 

그리고 예를 들어 출력 : 여기

는 적어도 그 내용은 양동이를 얻을 것입니다 방법의 예 지난 달에서 2 월까지의 카운트를 0으로 확인하는 것과 같은 간단한 작업 (3 개월 제한은 정적이라고 가정).

관련 문제