日時範囲を指定して、Elasticsearchのデータを取得する。
curlで日時範囲を指定して、Elasticsearchのデータを取得する方法を示す。
取得対象のデータには、
(snip) "@timestamp" : "2017-08-16T16:51:06+09:00" (snip)
のような感じで、タイムスタンプが設定されていることを前提とする。
curlで、タイムスタンプを日時の範囲を指定して、データを取得したい場合は、
$ curl -XGET 'localhost:9200/elsdata-2017.08.16/elsdata/_search' -d '{ "query": { "range" : { "@timestamp" : { "gte" : "2017-08-16T16:18:00+09:00", "lte": "now", "format" : "date_time_no_millis" } } } }'
という感じで、JSONを渡してあげると取得できる。
gteとlteを指定することで、2017-08-16T16:18:00+09:00から現在までのデータを取得することできる。
タイムスタンプの形式によっては、formatを設定する必要があるので、ここから条件を満たすものを選び設定する。
また、10000件以上のデータを一度に取得したい場合は、scrollとsizeを指定して、リクエストすると取得できる。
以下の例は、30000万件のデータを取得する場合
$ curl -XGET 'localhost:9200/elsdata-2017.08.16/elsdata/_search?scroll=1m&size=30000&pretty' -d '{ "query": { "range" : { "@timestamp" : { "gte" : "2017-08-16T16:18:00+09:00", "lte": "now", "format" : "date_time_no_millis" } } } }'