我正在学习使用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', ...)
由于
答案 0 :(得分:2)
当你说完全孤立时,我并不完全确定你的意思,但是使用搜索引擎来搜索NEST,你可以在其中指定很多类型,索引,查询类型等等。
SearchResponse类型,它在您的案例中告诉嵌套哪个对象类型将响应映射到。
所以:
float
您可以在搜索描述符中指定搜索项目,如下所示:
let inline transform<'a> (toExt : 'a list -> 'A) (a: 'A) : 'A =