Elasticsearch和.NET

šlj*_*ker 6 .net c# asp.net-mvc elasticsearch nest

我们正在考虑从Solr/Solr.net切换到Elasticsearch.我们从NEST开始.我们在搜索索引中只有4个文档.

private static void Main(string[] args)
{
    var node = new Uri("http://localhost:9200");
    var settings = new ConnectionSettings(
        node, "my-application");

    var client = new ElasticClient(settings);

    var stopwatch = Stopwatch.StartNew();
    var sr = client.Get<Movie>(1);

    Console.WriteLine(stopwatch.ElapsedMilliseconds);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码大约需要.250ms,而相同的代码HttpClientJsonSerializer30-45ms.只有4个文件,250毫秒是太多的时间.

NEST可以在高流量新闻网站上使用,还是推荐HttpClient+ JsonSerializercombo?搜索页面是2013年我们网站上访问量最大的页面.

提前致谢.

C T*_*ney 4

为了让 NEST 发出第一个请求,必须发生两件事。

  1. 在这种情况下,Json 序列化器 (Json.net) 必须缓存类型,以便它知道如何序列化和反序列化您来回发送的对象。

  2. Nest 有自己的流畅查询语言,必须从表示流畅查询语言的初始类型进行翻译,并以 JSON 形式传递给弹性搜索。Json 序列化程序还必须了解这些文档类型。

  3. HTTP 客户端必须启动才能发出请求。

目前,我在与 NEST 一起使用的单个索引中有超过 400 万个文档,并且使用 NEST 从服务器一直到互联网上的客户端进行搜索需要 50-70 毫秒。然而,像您一样,冷启动后第一个请求很慢。