2016-08-05 33 views
1

當我在ES中索引文檔時,我試圖在刷新間隔內通過同一文檔並且搜索沒有返回結果。是否有實時GET支持,無論索引的「刷新率」如何,都可以獲取索引後的文檔。我嘗試將refresh_interval減少到500ms而不是1s,但是我的搜索查詢甚至在500毫秒之前就發生了,並且將它進一步降低並不是一個好主意。Elasticsearch實時GET支持

回答

2

索引文檔後,您可以立即獲取它,而不必等待刷新間隔。

GET API is real-time

所以,如果你的索引這樣

POST index/type/1 
{ "name": "John Doe" } 

一個新的文件,您可以立即得到它,而無需使用

GET index/type/1 

如果你搜索的等待,但是,你會需要等待刷新間隔才能通過以檢索新文檔或調用刷新API。

爲了完整起見,值得指出的是,索引時也可以選擇refreshing the shards immediately,通過傳遞refresh=true參數如下。但是請注意,這可能會影響性能,所以應該謹慎使用。

POST index/type/1?refresh=true 
{ "name": "John Doe" } 

另外值得一提的是,ES 5,你必須告訴ES以wait for a refresh的選項從創建返回之前:

POST index/type/1?refresh=wait_for 
{ "name": "John Doe" } 

在這種情況下,一旦POST請求返回,您可以保證新文檔在下一次搜索調用中可用。

+0

完美!這工作。謝謝@Val –

+1

對於搜索,您可以使用刷新API強制刷新:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html – Pandawan