ITransport
可以被看作是Elasticsearch.Net
和NEST
这两个客户端类库的发动机。虽然它的接口非常简单,但它最终负责将客户端调用转换为响应。
如果由于某些原因,Elasticsearch官方的ITransport
内部实现方式不能满足你的使用需求,你可以通过实现自定义的ITransport
,引入自己的传输实现。
Transport
是实现了IConnectionConfigurationValues
接口的泛型类型,这是客户端运行所需的最小ITransport
单元。
在低阶的客户端(ElasticLowLevelClient
)中,一个Transport
像这样被实例化:
var lowLevelTransport = new Transport<ConnectionConfiguration>(new ConnectionConfiguration());
而在ElasticClient
在,实例方式如下:
var highlevelTransport = new Transport<ConnectionSettings>(new ConnectionSettings());
var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var inMemoryTransport = new Transport<ConnectionSettings>(
new ConnectionSettings(connectionPool, new InMemoryConnection()));
ITransport
接口仅有的两个方法为Request
()和RequestAsync()
,默认的ITransport
实现负责在客户端中引入许多构建块,如果你觉得默认的实现不能满足你的需求,同样的,你可以实现根据实际需要实现自己的ITransport
,如:
var response = inMemoryTransport.Request<SearchResponse<Project>>(
HttpMethod.GET,
"/_search",
PostData.Serializable(new { query = new { match_all = new { } } }));
response = await inMemoryTransport.RequestAsync<SearchResponse<Project>>(
HttpMethod.GET,
"/_search",
default(CancellationToken),
PostData.Serializable(new { query = new { match_all = new { } } }));
发表评论
登录用户才能发表评论, 请 登 录 或者 注册