在单个请求中,我想从SOR中检索文档,将它们存储在ElasticSearch中,然后使用ES搜索API搜索这些文档。
从索引文档的时间到分析和准备搜索的时间似乎有些滞后。
是否有任何方法可以将ES配置为不从索引文档的索引返回,直到分析器对其进行分析并立即对其进行搜索?
答案 0 :(得分:1)
Elasticsearch本质上是"near real-time",即所有索引每秒刷新一次(默认情况下)。虽然在大多数情况下看起来似乎不够,但可能不会,例如在您的情况下。
如果您需要立即提供文件,则需要refresh your indices明确致电
POST /_refresh
或者如果您只想刷新一个索引
POST /my_index/_refresh
刷新需要在索引调用返回之后和搜索调用发送之前进行。
请注意,在每个文档索引上执行此操作都会损害系统的性能。最好让您的应用程序了解ES的近实时性质,并在客户端处理此问题。
答案 1 :(得分:1)
如接受的答案中所建议的,刷新API本质上很重,如果您要进行大量的索引操作,则可能不希望在每次索引操作后调用此API。
引人注目的是,elasticsearch维护的translog被写入elasticsearch维护的内存段。此操作最好由elasticsearch自行决定,但是,您可以使用一些配置参数。
您可以采取另一种方法,它可能适合您的特定用例,也可能不适合您的具体使用情况,但现在就可以了。
查询index / _stats / refresh api并从那里检索刷新状态,索引文档,然后再次执行相同的统计信息查询。如果版本自索引编制时间以来已增加,则表示您可以搜索文档。
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-stats.html