[英]How do you get mixed results when searching multiple types with ElasticSearch 2.x using NEST?
[英]ElasticSearch Nest 2.x - Performance issue, how to disable audit trail?
我正在使用Elasticsearch Client NEST 2运行搜索查询。查询运行良好,但是检查响应我可以看到,在ES操作本身快速完成的同时,审计查询花费了大量时间。
这是一个请求/响应的示例:
在POST上成功进行低级调用:/ document / ElasticDocument / _search
此API调用的审核跟踪:-HealthyResponse:节点: http ://my-ES-server.com:9200/接收时间:00:00:00.3040912
请求:{“ from”:0,“ size”:1,“ query”:{“ term”:{“ Id”:{“ value”:1568}}}}
响应:{ “ took”:16 ,“ timed_out”:false,“ _ shards”:{“ total”:5,“ successful”:5,“ failed”:0},“ hits”:{“ total”:1, “MAX_SCORE”:9.345218, “点击”:[{ “_指数”: “文件”, “_类型”: “ElasticDocument”, “_ ID”: “1568”, “_分数”:9.345218, “_源”:{... .....}}]}}
我们可以看到,审核花费了304毫秒,而ES搜索仅花费了16毫秒。
我的问题是,是否仍要禁用此审计跟踪或调整配置以有效地提高性能?
我查看了源代码,发现审计跟踪操作是由ElasticsearchResponse的属性DebugInformation触发的,但是找不到如何禁用它。
我的配置非常简单:
var node = new Uri("http://my-ES-server.com:9200/");
var settings = new ConnectionSettings(node);
settings.DefaultIndex("document");
settings.DefaultTypeNameInferrer(p => p.Name);
settings.DefaultFieldNameInferrer(p => p);
settings.DisableDirectStreaming();
this.elasticClient = new ElasticClient(settings);
然后我的嵌套调用:
var response = this.elasticClient.Search<ElasticDocument>(s => s
.Query(q => q.Term("Id", documentId))
.From(0)
.Take(1)
);
有关信息,当我针对本地ES商店(填充相同数据)运行查询时,审计跟踪大约需要60毫秒,这比ES搜索操作更好,但仍然很大。
非常感谢,
迈克尔
访问.DebugInformation
属性时,将构建审核跟踪信息 。
took
响应是Elasticsearch在集群上执行搜索所花费的时间 , 并且不包括
Contrastly中, Took
你在审计跟踪中看到的时间是一个粗略的 (在它与计算感IDateTimeProvider
使用实施DateTime
默认精度) 之间的总时间
IConnectionPool
获取节点 由于网络延迟的差异,审核跟踪中报告的数量在不同的环境中可能会有所不同。 此外,由于json序列化程序用于成员访问的缓存的初始化,因此在第一个请求上它可能更高。
.DisableDirectStreaming()
,查看您的配置,除非您需要访问请求或响应主体字节, 否则不要调用.DisableDirectStreaming()
; 这会将请求和响应内部复制到MemoryStream
以便使字节可用。
我有类似的问题,这与审核跟踪无关。 关键是NEST默认使用Accept: application/json
标头。 当您在客户端上设置EnableHttpCompression()
时,NEST开始使用Accept-Encoding: gzip, deflate
标头,这是正确的。
这是我的客户端初始化代码:
var node = new Uri("http://localhost.:9200");
var settings = new ConnectionSettings(node)
.EnableHttpCompression()
.PrettyJson();
var client = new ElasticClient(settings);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.