在Nest中通过SearchRequest类设置索引名称

Ami*_*edi 0 .net c# elasticsearch nest

我使用Nest客户端来使用ElasticSearch.我想在ElasticSearch中搜索:

SearchRequest countRequest = new SearchRequest
{
  //Somthing
};

client.Search<Post>(countRequest);
Run Code Online (Sandbox Code Playgroud)

在另一方面 :

client.Search<Post>(s=>s.Index("IndexName").Query(...))
Run Code Online (Sandbox Code Playgroud)

我如何通过SearchRequest类搜索设置索引名称?

Duo*_*ran 9

这适用于使用较新版NEST的用户.在2.0.1中,我无法找到该Indices属性SearchRequest.但是,您可以通过构造函数传递它们:

var request = new SearchRequest<Post>("IndexName", "TypeName");
Run Code Online (Sandbox Code Playgroud)

我将索引和类型映射到ConnectionSettings这样.

ConnectionSettings settings = new ConnectionSettings("url");
settings.MapDefaultTypeIndices(t => t.Add(typeof(Post), "IndexName"));
settings.MapDefaultTypeNames(t => t.Add(typeof(Post), "TypeName"));
Run Code Online (Sandbox Code Playgroud)

告诉NEST索引和类型的其他方法:

client.Search<Post>(s => s.Index("IndexName").Type("TypeName").From(0));
Run Code Online (Sandbox Code Playgroud)

或者应用ElasticsearchTypeAttribute类型.

[ElasticsearchType(Name = "TypeName")]
public class Post{ }
Run Code Online (Sandbox Code Playgroud)