0

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 でフィールド タイプを指定する方法がわかりません。

4

2 に答える 2