Elasticsearch-dsl ライブラリを使用しようとしていますが、残念ながら十分に文書化されていません。
次のフィルターがありますが、これは機能します。
最初に、どれだけさかのぼって検索する必要があるかを見つけます。
longtime = datetime.datetime.strptime(str(datetime.datetime.now() - datetime.timedelta(seconds=int(pairs[p][1]) + basehrs)), '%Y-%m-%d %H:%M:%S.%f').strftime('%s.%f')
次に、フィルターを使用して検索を実行します
s = Search(using=es, index="history", doc_type=pairs[p][0]).filter('range', timestamp={'gte': longtime})
この後、いくつかの aggs を実行する必要があります。私は次のものを持っていますが、動作しません:
s = s.aggs.bucket('average', 'avg', field='ask')
それはただ戻ってきます:
Avg(field='ask')
また、簡単なことだけでなく、楽しい計算を行うためにも必要です。お願いします + (スプレッド / 2)
すなわち
s = s.aggs.bucket('average', 'avg', field='ask + (スプレッド / 2')
誰にもアイデアはありますか?
ここでは、spread を整数型にする必要があります。現在は文字列です。最初に python を使用してインデックスを作成しました。インデックスを削除してやり直してよかったのですが、作成時に Python でフィールド タイプを指定する方法がわかりません。