我目前使用巢ElasticSearch C#库与ElasticSearch交互。 我的项目是一个MVC 4的WebAPI项目,基本上建立了访问目录服务信息的RESTful Web服务。
我们才刚刚开始与NEST工作,并已被绊倒缺少文档。 那里的东西是有用的,但它有一些非常大的洞。 目前,一切都需要我们的作品,但是,我们正在运行到一个问题与连接有时需要长达一整秒。 我们想要做的是使用某种形式的连接池,类似于你如何与SQL Server进行交互。
下面是有关如何使用嵌套连接的文档: http://mpdreamz.github.com/NEST/concepts/connecting.html
下面是我们的项目相关的代码片段:
public class EOCategoryProvider : IProvider
{
public DNList ExecuteQuery(Query query)
{
//Configure the elastic client and it's settings
ConnectionSettings elasticSettings = new ConnectionSettings(Config.server, Config.port).SetDefaultIndex(Config.index);
ElasticClient client = new ElasticClient(elasticSettings);
//Connect to Elastic
ConnectionStatus connectionStatus;
if (client.TryConnect(out connectionStatus))
{
// Elastic Search Code here ...
} // end if
} // end ExecuteQuery
} // end EOCategoryProvider
从看文档,我不能看到一个连接池的任何规定。 我一直在考虑实施我自己(有,说储存3个或4 ElasticClient对象,并选择他们循环赛风格),但我想知道如果任何人有一个更好的解决方案。 如果没有,没有任何人有关于执行手工连接池的最佳方法建议? 任何文章指向?
感谢什么你们拿出。
更新 :这似乎已涉及到调用TryConnect在每次请求,和特定的网络设置。 相同的网络弹性盒上使用机器时的问题完全消失; 我的开发机器(平均为350毫秒的弹性盒)似乎无法进行HTTP连接有时,这引起了长时间的TryConnect。