我目前正在使用NEST ElasticSearch C#库与ElasticSearch交互。我的项目是一个MVC 4 WebAPI项目,基本上构建了一个RESTful webservice来访问目录辅助信息。
我们刚刚开始使用NEST,并在缺乏文档方面遇到了一些困难。虽然有些内容是有用的,但是它有一些很大的漏洞。目前,我们需要的一切都可以正常工作,但是,我们遇到了连接有时需要长达一秒钟的问题。我们希望使用某种连接池,类似于与SQL Server进行交互的方式。
这是使用NEST连接的文档:http://mpdreamz.github.com/NEST/concepts/connecting.html 以下是我们项目中相关的代码片段:
从文档中看,我没有看到任何有关连接池的规定。我一直在考虑实现自己的连接池(例如存储3或4个ElasticClient对象,并以轮询方式选择它们),但我想知道是否有更好的解决方案。如果没有,是否有建议手动实现连接池的最佳方法?有什么文章可以参考吗?
感谢你们提供的任何帮助。
更新:这似乎与每个请求调用TryConnect有关,以及特定的网络设置。当使用与Elastic盒子相同网络的机器时,问题完全消失了;我的开发机器(平均350ms到Elastic盒子)似乎有时无法建立http连接,这导致TryConnect的长时间。
我们刚刚开始使用NEST,并在缺乏文档方面遇到了一些困难。虽然有些内容是有用的,但是它有一些很大的漏洞。目前,我们需要的一切都可以正常工作,但是,我们遇到了连接有时需要长达一秒钟的问题。我们希望使用某种连接池,类似于与SQL Server进行交互的方式。
这是使用NEST连接的文档: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有关,以及特定的网络设置。当使用与Elastic盒子相同网络的机器时,问题完全消失了;我的开发机器(平均350ms到Elastic盒子)似乎有时无法建立http连接,这导致TryConnect的长时间。