2017-11-17 5 views
1

バルクAPIを使用してelasticsearchにドキュメントとしてapache logrowsを追加するためにcurlを使用しています。elasticsearchバルクAPIのすべてのドキュメントのインデックスを避ける方法

{"index": {"_type": "apache", "_id": "123", "_index": "apache-2017-01"}} 
{"s": 200, "d": "example.se", "@t": "2017-01-01T00:00:00.000Z", "p": "/foo"} 
{"index": {"_type": "apache", "_id": "124", "_index": "apache-2017-01"}} 
{"s": 200, "d": "example.se", "@t": "2017-01-01T00:00:00.000Z", "p": "/bar"} 
... more of the same ... 

私の推測では、すべてのlogrow文書のLuceneインデックスは、それのインデックスを更新行ということです:私は、次のポスト。しかし、私はそれを行うためにelasticsearchを必要としません。私は、すべてのログロードドキュメントを最初に追加した後、インデックスを更新しても問題ありません。

これは可能ですか?それは良いアイデーですか?それはパフォーマンスを劇的に改善するでしょうか?

+0

バルクAPIの全体的なポイントは、効率的な方法でインデックス/削除操作の束を実行することです。なぜElasticsearchが非効率的にそれをやっていると思われますか? – femtoRgon

答えて

0

あなたの直感は真実から遠くはありません。デフォルトElasticSearch will update its index every secondによって:

デフォルトindex.refresh_intervalは毎秒新しいセグメントを作成するために、Elasticsearch を強制され、1秒です。この値を大きくすると(たとえば、 30s)、より大きなセグメントのフラッシュが可能になり、将来のマージ の圧力が減少します。

だからインデックスのスループットを向上させる方法の一つは、可能性も無限大に、この index.refresh_intervalが増加していると、あなたの挿入を終えた後、再びオンにします。 (挿入されたドキュメントは、セグメントが閉じられた後にのみ検索可能です。つまり、書き込みが完了しました)

ただし、これはElasticSearchにドキュメントを挿入する際の唯一のボトルネックではありません。たとえば、ドキュメントを一括して挿入するために複数のスレッドを使用することや、ElasticSearchドキュメントのTune for index speedセクションに記載されているその他の調整方法を検討することができます。 Dynamic Index Settingsセクションで変更する必要のある他のインデックスパラメータを参照できます。

希望に役立ちます!

関連する問題