【发布时间】:2017-06-23 15:55:30
【问题描述】:
在工作中,我设置了一个开发环境,我们正在测试我们电子商务网站的弹性搜索。我注意到查询运行得非常快(与 sql server 相比)。但是,第一次执行查询时,最终在目录中呈现产品需要相当长的时间。初始查询后,一切都开始运行得很快。
如果我在同样的事情发生后离开网站并重新进入。
顺便说一下,我们的应用程序正在使用 NEST(高级 c# 客户端),显然对于第一个查询,它需要执行一些延迟搜索的操作。 有没有办法防止这种情况发生?我可以将 NEST 配置为在应用程序启动时执行此操作吗?
PD:弹性搜索 5.4
更新:
这就是我在 NinjectModule 中初始化 ElasticClient 和 ConnectionSettings 的方式:
public class ElasticRepositoryInjection : NinjectModule
{
public override void Load()
{
var connectionPool = new SingleNodeConnectionPool(new Uri(ConfigurationManager.AppSettings["elastic.server"]));
var elasticSearchConnectionSettings = new ConnectionSettings(connectionPool)
.DefaultIndex("isolution")
.EnableTcpKeepAlive(TimeSpan.FromMilliseconds(2000), TimeSpan.FromMilliseconds(2000))
.DisableDirectStreaming();
Bind<ConnectionSettings>().ToConstant(elasticSearchConnectionSettings).InSingletonScope();
var client = new ElasticClient((Kernel as StandardKernel).Get<ConnectionSettings>());
Bind<ElasticClient>().ToConstant(client).InSingletonScope();
client.Search<Domain.Isolution.ElasticSearch.Product>(s => s
.Query(q => q.MatchAll()));
}
}
【问题讨论】:
标签: c# elasticsearch nest