問題タブ [elasticsearch-py]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - xより大きいIDフィールドを照会するElasticsearchの方法
Elasticsearch の 10k の壁を超えるために複数回クエリを実行して、結果にページネーションを適用しようとしています。Elasticsearch の結果は複数のクエリで異なる可能性があるため、生成された ID を使用して次の結果を取得したいと考えています。
たとえば、1000 件の結果を返すクエリを実行するとします。次に、1000 番目の結果の ID 値を取得し、次のようなクエリを実行します: match : ID {{1000thID}}
このようにして、1001 から 2000 までの結果を取得したいと考えています。その後 2001 年から 3000 年まで、というように続きます。
現在、Python 用の Elasticsearch DSL を使用して、次のようなドメイン名を照会しています。
上記の要件に一致するようにこのコードを再構築するにはどうすればよいですか。('一致',_ID > ID_変数)
elasticsearch - ネストされたオブジェクトに新しいフィールドを追加する
エラスティックサーチ 2.3.3
更新APIを使用して既存のドキュメントに新しいフィールドを追加できません。どうすれば追加できますか?
以下に、ドキュメント更新用のElasticsearch Python APIスクリプトを示します。更新クエリが変数に割り当てられquery
ます。
ネストされたオブジェクトを使用します。ネストされていないフィールドを更新しても問題はありません。
Elasticsearch ドキュメントの一部:
Elasticsearch マッピングの一部:
更新の実行後に次のエラーが表示されます。
python - ソースフィルターを使用したelasticsearch-py検索
Elasticsearch-py (es バージョンは 2.3) を使用しており、俳優、監督、ジャンル、プロット、タイトル、年などのマッピングを使用して、インデックス内のすべてのドキュメントから「タイトル」フィールドのみを返したいと考えています。
私は現在試しmessages = es.search(index="movies", _source=['hits.hits.title'])
ていますが、結果の応答は次のとおりです。
{u'hits': {u'hits': [{u'_score': 1.0, u'_type': u'movie', u'_id': u'tt0116996', u'_source': {}, u'_index': u'movies'}, {u'_score': 1.0, u'_type': u'movie', u'_id': u'1', u'_source': {}, u'_index': u'movies'}], u'total': 2, u'max_score': 1.0}, u'_shards': {u'successful': 1, u'failed': 0, u'total': 1}, u'took': 2, u'timed_out': False}
さまざまなバージョンのフィルター パスとソース フィールド リストを試しましたが、うまくいきません。
elasticsearch - elastisearch クライアントでの helpers.scan での filter_path の使用
Elasticsearch で検索操作を行う場合、メタデータを除外して、応答で「_source」のみを返すようにします。次の方法で「検索」を介して同じことを達成できます。
out1 = es.search(index='index.com', filter_path=['hits.hits._id', 'hits.hits._source'])
しかし、スキャンメソッドで同じことをすると、空のリストが返されます:
out2 = helpers.scan(es, query, index='index.com', doc_type='2016-07-27',filter_path= ['hits.hits._source'])
問題は、'scan' メソッドの応答を処理する方法、または値を filter_path に渡す方法にある可能性があります。出力を確認するには、out2 をリストに解析します。
python - elasticsearch-dsl - Python で平均を収集する集計
Elasticsearch-dsl ライブラリを使用しようとしていますが、残念ながら十分に文書化されていません。
次のフィルターがありますが、これは機能します。
最初に、どれだけさかのぼって検索する必要があるかを見つけます。
次に、フィルターを使用して検索を実行します
この後、いくつかの aggs を実行する必要があります。私は次のものを持っていますが、動作しません:
それはただ戻ってきます:
Avg(field='ask')
また、簡単なことだけでなく、楽しい計算を行うためにも必要です。お願いします + (スプレッド / 2)
すなわち
s = s.aggs.bucket('average', 'avg', field='ask + (スプレッド / 2')
誰にもアイデアはありますか?
ここでは、spread を整数型にする必要があります。現在は文字列です。最初に python を使用してインデックスを作成しました。インデックスを削除してやり直してよかったのですが、作成時に Python でフィールド タイプを指定する方法がわかりません。