2016-10-05 3 views
0

elasticsearch에 다음 sql 쿼리를 추출하고 싶습니다.날짜 범위 데이터와 must_not bool 쿼리를 사용한 Elasticsearch 필터링

Select * 
from someTable 
Where @timestamp < some_date and @timestamp >= some_other_date 
and dst != '-' 

그런 다음 반환 된 문서에서 일부 집계를 수행하십시오. 집계 부분은 알아 냈고 완벽하게 작동합니다. 하지만 문서를 제대로 필터링하지 않습니다. 나는 다음과 같은 쿼리를 시도했지만 dst = '-'와 함께 doc을 얻었고, 차례로 집계에서 계산했다.

쿼리

"query": {        
    "bool": { 
     "must_not": { 
      "term": { 
       "dst": '-' 
      } 
     }, 
     "filter":{ 
      "range":{ 
       "@timestamp":{ 
        "gte":"a date", 
        "lt": "another date" 
       } 
      } 
     } 
    } 
}  

내가 뭔가 잘못하고있는 중이 야. 집계를 사용하기 때문에 크기를 0으로 설정합니다 (여기에 표시되지 않음). Elasticsearch ver2.4 및 python elasticsearch 라이브러리. "

+0

당신이 당신의 쿼리를 보내는 방법? 또한'dst' 필드의 매핑 무엇인가? – Val

+0

파이썬 elasticsearch 클라이언트를 통해 쿼리를 전송 집계 쿼리. dst 필드는 analzyed. 그것이 잘못 일 수 있습니까? 쿼리의 논리가 올바른가요? – Apostolos

답변

1

이 필드는이 분석기는 제거로 분석해서는 안된다 - -

나는 집계 결과 문서에서 값이 포함되어 있기 때문에 DST가 '이라고 작동하지 않습니다 알고 있습니다. 필드에서 문자 인덱스에

하는 경우 이 필드가 여러 필드를 사용하여 타 이유에 대해 분석 할 필요가있다. https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html

+0

이것이 문제라고 생각 했나요? 쿼리가 정확합니까? 내 게시물에 쓰여진 SQL 쿼리와 일치합니까? – Apostolos

+1

not_analyzed로 인덱스 매핑을 수정하면 제대로 작동합니다. –

관련 문제