按类型选择时NEST出错
本文关键字:NEST 出错 选择 类型 | 更新日期: 2023-09-27 18:02:09
我使用NEST按类型从ElasticSearch获得结果。
到目前为止,我已经尝试过了,但是我得到了所有类型的结果。
[HttpGet]
public ActionResult List(string poiType, int? page, string sortName)
{
List<POIModel> resultsList = new List<POIModel>();
var node = new Uri(WebConfigurationManager.AppSettings["ElasticSearchLocation"]);
var settings = new ConnectionSettings(node);
settings.DefaultIndex("pois");
var client = new ElasticClient(settings);
var result = client.Search<POIModel>(s => s.Type(poiType).MatchAll());
resultsList = result.Hits.Select(t =>
{
t.Source.id = int.Parse(t.Id);
return t.Source;
}).ToList<POIModel>();
return View(resultList);
}
我的索引是"pois",我尝试通过poiType选择结果并将它们映射到列表中,但我从所有类型获得结果。
我能做什么或者尝试只得到一种类型?
您的代码看起来很好,并产生以下请求,其中poiType
是"poi-type"
POST http://localhost:9200/pois/poi-type/_search
{
"query": {
"match_all": {}
}
}
如果您检查请求(使用web调试代理,如Fiddler,或使用.OnRequestCompleted()
和DisableDirectStreaming()
在ConnectionSettings
),你看到了什么?
我的一个建议是创建一个ElasticClient
作为一个单例,并将其作为依赖传递给你的控制器;每个ConnectionSettings
使用的缓存可以相对构建昂贵,所以共享单个实例是一个好主意,ElasticClient
也是线程安全的,所以你也可以共享这个的单个实例。