2017-02-13 7 views
0

私は時系列データを持っており、2000年レコードの固定セットで時間範囲を使用してElasticsearchをクエリしたいと思います。エラスティックサーチのn番目のレコードを返す

私はこのクエリ

GET http://IP:9200/MYINDEX/_search 
{ 
    "_source": ["XXX1", "XXX2","timestamp"], 
    "sort" : 
     { "@timestamp" : {"order" : "asc"}}, 
    "query" : { 
     "range" : { 
      "@timestamp" : { 
       "gte" : "2017-02-10T10:55:31,259Z", 
       "lte" : "2017-02-10T10:55:32,272Z" 
      } 
     } 
} 

は、それだけですべての5位または10位のレコードを返すことは可能ですか? フィルタスクリプトがいくつか見つかりましたが、どれも動作していないようです。

1つのインデックスには何百万ものレコードがあるので、返される値の数を制限することが不可欠です。

EDIT:ブール値に置き換えられた濾過becasueリワーククエリ:それを行うための一つの方法は、

{ 
 
    "_source":[ 
 
     "XXX1", 
 
     "XXX2", 
 
     "timestamp" 
 
    ], 
 
    "sort":{ 
 
     "@timestamp":{ 
 
     "order":"asc" 
 
     } 
 
    }, 
 
    "query":{ 
 
     "bool":{ 
 
     "must":{ 
 
      "range":{ 
 
       "@timestamp":{ 
 
        "gte":"2017-02-10T10:55:31,259Z", 
 
        "lte":"2017-02-10T10:55:32,272Z" 
 
       } 
 
      } 
 
     }, 
 
     "filter":{ 
 
      "script":{ 
 
       "script":"doc['@timestamp'].value % 5 == 0" 
 
      } 
 
     } 
 
     } 
 
    } 
 
}

+1

に見えるんhttps://www.elastic.co/guide/en/elasticsearch/guide/current/pagination.html – Niloct

答えて

1

があります。 DBの自動増分フィールドのように動作するフィールドを追加することができます。

次に、実行するクエリにフィルタを追加できます。

 "filter": { 
     "script": { 
      "script": "doc['auto_increment'].value % n == 0", 
      "params" : { 
      "n" : 5 
      } 
     } 
     } 

これは、時系列データを持ち、範囲を検索する予定のインデックスに有効です。フィールドにテキスト検索が追加されていると、正しく機能しません。

あなたが試しているクエリでは、このようなものに変換されます。参考のため

GET http://IP:9200/MYINDEX/_search 
{ 
    "_source": ["XXX1", "XXX2","timestamp"], 
    "sort" : 
     { "@timestamp" : {"order" : "asc"}}, 
    "query" : { 
     "filtered": { 
      "query": { 
       "range" : { 
        "@timestamp" : { 
         "gte" : "2017-02-10T10:55:31,259Z", 
         "lte" : "2017-02-10T10:55:32,272Z" 
       } 
      } 
      }, 
      "filter": { 
       "script": { 
        "script": "doc['auto_increment'].value % 5 == 0" 

     } 
      } 
     } 

} 
} 

this

+0

おかげで多くのことを参照してください。私はこのアプローチを試みましたが、文法には幸運はありませんでした。正確に私はクエリ内に配置する必要がありますか? –

+0

私は構文を追加しました。しかし、それをテストすることはできませんでした。試してみる。あなたは軽微な微調整をしなければならないかもしれません。それが動作するかどうか私に教えてください。 – pratikvasa

+0

ちょっと、ありがとうございました...フィルターをかけたものが「ブール」に置き換えられたので、私は何かリワークをしていました。 –

関連する問題