簡體   English   中英

如何避免Elasticsearch Bulk API中每個文檔的索引

[英]How to avoid index for every document in elasticsearch bulk API

我正在使用curl將apache日志作為文檔添加到使用批量API的elasticsearch中。 我發布以下內容:

{"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來做。 首先添加所有 logrow文檔,然后再更新索引,就可以了。

這可能嗎? 這是一個好主意嗎? 它會改善性能嗎?

你的直覺離真理不遠。 默認情況下,ElasticSearch 每秒更新其索引

默認index.refresh_interval為1s,這會強制Elasticsearch每秒創建一個新段。 增大此值(例如30s)將允許較大的段沖洗並降低將來的合並壓力。

因此,增加索引吞吐量的一種方法是增加index.refresh_interval ,甚至可能增加到無窮大,然后在完成插入操作后將其重新打開。 (請注意,插入的文檔僅在段關閉(即寫入完成)之后才可用於搜索。)

但是,這不是將文檔插入ElasticSearch時唯一可能的瓶頸。 例如,您可能考慮使用多個線程來批量插入文檔,或者使用ElasticSearch文檔的“針對索引速度進行調整”部分中描述的其他調整。 您可以在“ 動態索引設置”部分中查找要更改的其他索引參數。

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM