[英]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.