2017-05-16 10 views
0

の前に表示されませんでした指定された条件のデータを照会し、指定された時間範囲のデータでフィールドIDを除外します。 ビジネス背景:ユーザーが要求するたびに、デバイスIDと時刻を記録するたびに、新しいユーザーを照会する必要があります(つまり、今日のデバイスIDは以前のレコードには表示されません)。elasticsearchクエリ今日のIDは

SQL: `

SELECT 
    * 
FROM logstash* 
WHERE 
    request_act = 'xxx' 
    and request_domain = 'xxx' 
    and request_device = 'xxx' 
    and request_appname = 'xxx' 
    and request_begints >= 1494604800 
    and request_begints < 1494691200 
and request_id not in (
    select 
     distinct request_id 
    from logstash* 
    where request_act = 'xxx' 
    and request_domain = 'xxx' 
    and request_device = 'xxx' 
    and request_appname = 'xxx' 
    and request_begints < 1494604800 
) 

`

SQL

どのようにこのDSL要求を記述する方法を教えてください?

おかげで、よろしく!

答えて

0

私は

を理解できるようにSELECT DISTINCT文が唯一異なる値を返すために使用され、この結論を得ました。

実行されたすべての内側のクエリの最初にして、外側のクエリが実行されますREQUEST_IDのユニークなIDを取得し、それは

、REQUEST_IDのすべてのIDをフェッチいますが、NOT IN のための条件をチェックし、しかし、すべての異なる値内部クエリはすべての結果の一部です。

結果が得られません。

+0

回答ありがとうございます。条件が "and request_begints <1494604800"でない場合、これは<今日の日付です。これを試して – user3377796

+0

: request_act = 'XXX' とrequest_domain = 'XXX' とrequest_device = 'XXX' とrequest_appname = 'XXX' はこれではない '1494604800' AND '1494691200' – Nidhi

+0

BETWEEN request_begintsを備えたlogstash SELECT * FROM私が望むデータこれはちょうどデータの日ですが、私は新しいデバイスIDと同じ日に別のものにする必要があり、デバイスIDは過去に表示されませんでした。 – user3377796

関連する問題