2016-08-05 34 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