問題タブ [elasticsearch-bulk-api]

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.

0 投票する
9 に答える
43846 参照

elasticsearch - ElasticSearchで複数のアイテムを更新するにはどうすればよいですか?

tag次のマッピングを使用して、ElasticSearchインデックスにタイプがあるとします。

各エントリはタグであり、そのタグのエイリアスの配列です。アイテムの例を次に示します。

時々、エイリアスを使用して新しいタグワードを追加したり、既存のタグワードに新しいエイリアスを追加したりしたいと思います。

エイリアスを使用して新しいタグワードを追加するのは簡単です。これは単なる新しいドキュメントです。ただし、既存のタグワードに新しいエイリアスを適切な方法で追加するにはどうすればよいですか?

タグワードを検索し、そのドキュメントを取得し、エイリアスがエイリアスの配列にすでに存在するかどうかを検索し、追加しない場合は、保存するだけでよいことを知っています。ただし、これは良い解決策のようには思えません。

一括更新を行う方法はありますか?

0 投票する
7 に答える
31801 参照

elasticsearch - ElasticSearch の理想的なバルク サイズの式は何ですか?

ElasticSearch で一括インデックス サイズを計算する式が必要だと思います。おそらく、以下はそのような式の変数です。

  • ノード数
  • シャード/インデックスの数
  • 原稿サイズ
  • ディスク書き込み速度
  • LAN速度

誰かが数式を知っているか使っているのだろうか。そうでない場合、人々はどのようにバルクサイズを決定しますか? 試行錯誤で?

0 投票する
5 に答える
94842 参照

python - Python を使用して Bulk API を使用してキーワードを ES に格納する方法

私のpythonプログラムと統合されたElasticSearchにメッセージを保存する必要があります。今、メッセージを保存しようとしているのは次のとおりです。

つまり、10 個のメッセージがある場合、コードを 10 回繰り返す必要があります。そこで、スクリプト ファイルまたはバッチ ファイルを作成してみます。ElasticSearch Guideを確認したところ、BULK APIが利用可能です。フォーマットは次のようになります。

私がしたことは:

また、curl ツールを使用してドキュメントを保存します。

次に、Python コードを使用してファイルを Elastic Search に保存します。

0 投票する
1 に答える
4179 参照

elasticsearch - Java からの Time To Live (TTL) の設定 - サンプルがリクエストされました

編集: これは基本的に私がやりたいことであり、Javaでのみ

ElasticSearch を使用して、インデックスにドキュメントを追加し、IndexRequest アイテムを BulkRequestBuilder にバイパスします。

一定の時間が経過した後 (有効期限/ttl) にドキュメントをインデックスから削除したい

これは、インデックスのデフォルトを設定するか、ドキュメントごとに行うことができます。どちらのアプローチでも問題ありません

以下のコードは、ドキュメントごとに実行する試みです。それは動作しません。インデックスに対してTTLが有効になっていないためだと思います。以下のコードが機能するように TTL を有効にするために追加する必要がある Java コードを表示するか、または TTL を有効にして Java のインデックスのデフォルトの TTL 値を設定する別のコードを表示します。REST API から行う方法は知っていますが、必要です可能であれば、Java コードから実行します。

後で、このメソッドをポーリングして単体テストをチェックインしましたが、ドキュメント数が減ることはありません。

0 投票する
2 に答える
14194 参照

elasticsearch - Elasticsearch で複数の更新/削除を処理するには?

複数のドキュメントを更新または削除する必要があります。

更新するときは、次のようにします。

  1. 最初にドキュメントを検索し、返される結果の制限を大きくします (たとえば、サイズ: 10000)。
  2. 返されたドキュメントごとに、特定の値を変更します。
  3. 変更されたリスト全体(バルクインデックス)をelasticsearchに送信します。

この操作は、ポイント 1 が結果を返さなくなるまで行われます。

削除するときは、次のようにします。

  1. 最初にドキュメントを検索し、返される結果に大きな制限を設定します (たとえば、サイズ: 10000)。
  2. elasticsearch _id ドキュメントに送信する見つかったすべてのドキュメントを削除します (10000 リクエスト)

この操作は、ポイント 1 が結果を返さなくなるまで繰り返されます。

これは更新を行う正しい方法ですか?

削除するときに、複数の ID を送信して複数のドキュメントを一度に削除する方法はありますか?

0 投票する
1 に答える
10014 参照

json - JSONオブジェクトをドキュメントとしてelasticsearchに一括ロードする

元のコンテンツを変更せずに以下のデータをelasticsearchに一括ロードする方法はありますか? 各オブジェクトを 1 つのドキュメントとして POST します。現時点では、Python を使用して個々のオブジェクトを解析し、一度に 1 つずつ POST しています。

REST サーバーから Elasticsearch への本番環境でこの種の処理を行うには、多くの時間がかかります。

上記のファイルを一度にアップロードできる単一の POST/curl コマンドがあり、elasticsearch はそれを解析し、各オブジェクトを独自のドキュメントにしますか?

私たちはelasticsearch 1.3.2を使用しています

0 投票する
2 に答える
11133 参照

python - Elasticsearch python 一括 API (elasticsearch-py)

私はpy-elasticsearchバルク@Diolorソリューションが機能することについて混乱してい ます-pythonですが、プレーンな es.bulk() を使用したい

私のコード:

エラーは次のとおりです。

POST 呼び出し用に生成された URL は

/logstash-test/test/_bulk

POST 本文は次のとおりです。

{"host":"logsqa","path":"/logs","message":"test test","@timestamp":"2014-10-02T10:11:25.980256","tags":["複数行","mydate_0.005"]}

だから私は手でカールをしました:このカールはうまくいきません:

したがって、エラーは部分的に問題ありませんが、elasticsearch.bulk() が入力引数を適切に管理することを期待していました。

pythonf 関数は次のとおりです。

0 投票する
4 に答える
13801 参照

python - Bulk API、スキャン、スクロールによるエラスティック検索の再インデックス

現在、Elastic search のドキュメントPython API を使用した例を参照して、Elastic search セットアップのインデックスを再作成しようとしています。

ただし、これがどのように機能するかについては少し混乱しています。Python API からスクロール ID を取得できました。

さて、私の質問は、これが私にとって何の役に立つのかということです. スクロールIDを知ることで何が得られますか? ドキュメントには「Bulk API」を使用するように記載されていますが、scoll_id がこれにどのように影響するのかわかりません。少し混乱しました。

scroll_id を正しく取得したことを考慮して、この時点からインデックスを再作成する方法を示す簡単な例を誰か教えてください。

0 投票する
1 に答える
458 参照

elasticsearch - Elasticsearch クラスターのインデックスからすべてのドキュメントを取得し、別の Elasticsearch クラスターでインデックスを作成する

ここでの私の目標は、ES クラスターのインデックスからすべてのドキュメントを取得し、それらを同じメタデータを保持する別の ES クラスターに挿入することです。

データを取得するための mget API と挿入するための Bulk API を見てきましたが、この Bulk API には特別な構造が必要です。

したがって、私の考えは、ファイル内の EScluster1 のデータを取得し、それを再配置して Bulk API の構造に合わせ、EScluster2 にインデックス付けすることです。

より良い方法やより迅速な方法はありますか?