我们一直在测试Elastic Search的日志记录系统。 ElasticSearch集群中的索引有30万个数据。
我在我的电脑上安装了Kibana和NEST。本地服务器上的集群。
当我使用Dev Tools从Kibana进行查询时,响应时间为1或2 ms,它带来10条记录
GET /dbmessages/_search
{
"query": {
"bool": {
"must": [
{ "match": { "user": "Robin*" } }
]
}
}
}
然而,对于.NET客户端(使用NEST),即使使用相同的查询,响应时间也大约为600毫秒。
var sw = new Stopwatch();
sw.Start();
var result = client.Search<Message>((s => s
.Index("dbmessages")
.From(0)
.Size(10)
.Query(q => q.Raw(@" ""query"": { ""bool"": { ""must"": [ { ""match"": { ""user"": ""Robin*"" } } ] } }"))));
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
如果我使用类似linq的查询,它也会慢一些。
var response = client.Search<Message>(s => s
.From(0)
.Size(10)
.Index("dbmessages")
.Type(typeof(Message))
.Query(q => q.QueryString(qs => qs.Query("Robin*"))));
即使mongoDb和SQLServer也可以更快地进行选择查询(在~25毫秒内)。我相信NEST有问题。
任何人都知道为什么会这样?
由于