ElasticSearch Nest - 仅使用indexname查询

时间:2017-03-20 16:09:03

标签: .net elasticsearch nest elasticsearch-net

我正在学习使用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 个答案:

答案 0 :(得分:2)

当你说完全孤立时,我并不完全确定你的意思,但是使用搜索引擎来搜索NEST,你可以在其中指定很多类型,索引,查询类型等等。

SearchResponse类型,它在您的案例中告诉嵌套哪个对象类型将响应映射到。

所以:

float

您可以在搜索描述符中指定搜索项目,如下所示:

let inline transform<'a> (toExt : 'a list -> 'A) (a: 'A) : 'A =