我正在学习使用ElasticSearch和Nest作为.Net客户端 . 在索引数据时,我没有定义模型(类型映射)来编写索引,我依靠ElasticSearch为我创建
创建客户端
var settings = new ConnectionSettings(_config.Uri);
settings.DefaultIndex(_config.defaultIndexName);
_client = new ElasticClient(settings);
按类型信息索引数据
public void Index(object data)
{
var response = _client.Index(data, d => d.Type(data.GetType().Name));
if (!response.IsValid)
{
throw new InvalidOperationException(response.DebugInformation);
}
}
假设数据类型是 Project
带有一些属性的类
class Project
{
int Id {get; set;}
string Name {get; set;}
}
如何查询上述索引数据 . 请记住,索引部分和搜索/查询部分是系统完全隔离的部分,他们彼此不了解,因此在搜索时,我可以获得的最大值是被查询的“项目”类型的名称但是不是它的内部字段细节 . 那么,我如何在ElasticSearch中运行搜索查询,因为它的流畅API需要是这样的
_client.Search<Project>(...)
但我想要一些通用的东西
_client.Search('project', ...)
谢谢
1 回答
当你说完全孤立时,我并不完全确定你的意思,但使用搜索引擎创建了NEST,你可以在其中指定类似于类型,索引,查询类型等等 .
SearchResponse类型是在您的情况下项目告诉嵌套响应的对象类型 .
所以:
您可以在搜索描述符中指定搜索项目,如下所示: